今天遇到以下问题,想知道它是否已经被记录或是一个已知的陷阱。本质上,实例化的视图维护着对类属性的引用。
虽然这只发生在数组上——数字没有以同样的方式被引用——也许是因为它是一个原语。
这里的代码也是:
var Menu = Backbone.View.extend({
_someNumber: 0,
_items: [],
initialize: function () {
this._someNumber++;
//this._items = []; // uncommenting this creates a new array, rather than the reference to the class's
},
addItem: function (item) {
this._items.push(item);
}
});
var menu1 = new Menu();
menu1.addItem({foo: 'bar'});
console.log(menu1._items.length, menu1._someNumber);
$('#result1').text('Menu #1 Item count: ' + menu1._items.length + ' - someNumber: ' + menu1._someNumber);
var menu2 = new Menu();
menu2.addItem({foo: 'bar'});
console.log(menu1._items.length, menu1._someNumber);
$('#result2').text('Menu #1 Item count: ' + menu1._items.length + ' - someNumber: ' + menu1._someNumber);
所以我想我的问题是——这是预期的行为吗?