我需要扩展主要的Backbone功能(View,Model,Router)和一些自己的成员。但是,以下操作无法正常工作:
Backbone.View.prototype.foo = ["bar"];
不可否认,表达方式
testView = new Backbone.view.extend({})
testView2 = new Backbone.view.extend({})
alert(testView.foo.length);
陈述1但设置
testView2.foo.push("blah");
还将字符串添加到testView.foo,因为引用是相同的。
任何人都明白如何扩展这些对象?
提前致谢:)
利奥
答案 0 :(得分:4)
通常,您不会扩展标准视图,而是创建自己的基本视图类型。您应该避免更改Backbone原型的值。
var BaseView = Backbone.View.extend({
foo: null,
initialize: function(options){
this.foo = ["bar"];
Backbone.View.prototype.initialize.apply(this, arguments);
}
});
var testView = new BaseView();
var testView2 = new BaseView();
console.log(testView.foo.length); // prints '1'
console.log(testView2.foo.length); // prints '1'
testView2.foo.push("blah");
console.log(testView.foo.length); // prints '1'
console.log(testView2.foo.length); // prints '2'