编辑:修复了我的示例以演示该行为。
我希望details
AbstractParent 的属性是我所说的“实例属性”,但它更像是“静态属性”。我意识到这些术语不适用于 javascript,那么为什么当我创建一个新的子类时它没有得到自己独特的 AbstractParent 原型?为什么他们共享同一个?
在下面的代码中,我希望得到一个空警报,但我得到的是“新详细信息”
var AbstractParent = Backbone.Model.extend({
details: [],
addDetail: function(detail) {
this.details.push(detail);
},
getDetails: function() {
var rtn = '';
for(var i=0;i<this.details.length;i++) {
rtn += this.details[i];
}
return rtn;
}
});
var Child = AbstractParent.extend({});
var ch1 = new Child;
ch1.addDetail("new details");
var ch2 = new Child;
alert(ch2.getDetails()); // => 'new details'
这似乎只有在details
数组时才以这种方式工作。如果它是字符串或对象,则它不被ch1
and共享ch2
。