使用Polymer默认属性函数时,是否需要包装`new Object()`?

时间:2015-06-03 20:17:08

标签: javascript polymer

Polymer 1.0 documentation states

  

如果默认值应该是实例唯一的数组或对象,请在函数内创建数组或对象。

我是否需要在匿名函数中包装new Thing(params)等对象构造函数?

2 个答案:

答案 0 :(得分:2)

这意味着图书馆在决定属性的值是否应该在对象引用时进行值复制时,不会做出努力。

基础知识是javascript:

var C = function() {
}
C.prototype.property = {};
var a = new C();
var b = new C();
a.property.value = "Hello world"
console.log(b.property); // object { "value": "Hello world" }

ab共享对同一对象引用的引用。而不是:

var C = function() {
    this.property = {};
}
var a = new C();
var b = new C();
a.property.value = "Hello world"
console.log(b.property); // empty object

每次实例化对象时都会创建一个新的对象引用。在javascript中使用对象时,始终需要注意这一点。并且数组实际上是对象,因此它们遵循相同的规则。

答案 1 :(得分:1)

我认为部分文档指的是this

  

值可以是原始值,也可以是返回值的函数(应该用于初始化对象和数组以避免实例上的共享对象)。

在此示例中,声明了名为data的属性Object。此属性的值是调用function,它将返回一个新的Object