我正在扩展 Backbone 视图,例如:
var baseView = Backbone.View.extend({
fruits : [],
listFruits : function() {
console.log(this.fruits);
}
});
var firstView = baseView.extend({
initialize : function() {
this.fruits.push("apple");
}
});
var secondView = baseView.extend({
initialize : function() {
this.fruits.push("pear");
}
});
var firstViewInstance = new firstView(); // ["apple", "pear"]
var secondViewInstance = new secondView(); // ["apple", "pear"]
firstViewInstance.listFruits();
secondViewInstance.listFruits();
在我看来,firstViewInstance
应该secondViewInstance
是完全分开的,但它们显然是相关的。如何实现两个独立的视图对象,它们都继承自一个共同的基础,但不共享数据?
编辑:根据下面的答案,我在http://jsfiddle.net/qZ7SU/有一个更新的小提琴,这似乎解决了这个问题。我仍然不完全清楚发生了什么,但我认为明确附加fruits[]
到this
,将其创建为实例变量,而不是将其附加到原型。