我指的是这篇文章。基本上,我正在创建一个类,并使用
以下第一个示例正常工作,但第二个示例仍会获取第一个“实例”的
如预期工作:
为什么第二个示例中
init
函数设置一个options
属性。请参见http://jsbin.com/usaboh/1/edit,以查看工作示例(启用控制台以查看输出)。以下第一个示例正常工作,但第二个示例仍会获取第一个“实例”的
options
值。如预期工作:
var Person = Class.extend({
options: {value: 2},
init: function(options){
if(options) {
this.options = options;
}
}
});
var p = new Person({value: 5});
console.log(p.options); //{"value": 5} (ok)
var p2 = new Person();
console.log(p2.options); //{"value": 2} (ok)
无法按预期工作:
var Person = Class.extend({
options: {value: 2},
init: function(options){
if(options) {
for (var name in options) {
this.options[name] = options[name];
}
}
}
});
var p = new Person({value: 5});
console.log(p.options); //{"value": 5} (ok)
var p2 = new Person();
console.log(p2.options); //{"value": 5} (why 5 ??? shouldn't be 2 ?)
为什么第二个示例中
options
的值不像第一个示例中那样是{"value": 2}
?
new
之前设置:p.options = {"value": 10};
,例如,结果是相同的(即{"value": 5}"
)。因此我认为这不是一种冲突问题。 - Jails