1

今日、次の問題に出くわしました。すでに文書化されているのか、それとも既知の落とし穴なのか疑問に思います。基本的に、インスタンス化されたビューはクラス プロパティへの参照を保持しています。

これがフィドルです。

これは配列に対してのみ発生していますが、数値は同じ方法で参照されていませんが、おそらくプリミティブであるためです。

コードも次のとおりです。

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);

だから私の質問は次のようになると思います-これは予想される動作ですか?

4

0 に答える 0