Backbones v1.0.0 のソース コードを見ていて、興味深いことに気付きました。Backbone.Events オブジェクトでは、" on " メソッドが変数をオブジェクト値にリンクしているようです:
on: function(name, callback, context) {
if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
this._events || (this._events = {});
var events = this._events[name] || (this._events[name] = []);
events.push({callback: callback, context: context, ctx: context || this});
return this;
},
" events " 変数は、既存の配列または空の配列に設定された " this._events[name] " 値に設定されます。奇妙な部分は、オブジェクトをこの配列にプッシュする次の行です。プッシュ後、「 this._events[name] 」の値を確認すると、配列の最後に新しいオブジェクトが追加されています。私には、この 2 つは本質的にリンクしているように見えます。一方を更新すると、もう一方も更新されます。
私は以前にこのようなものに出くわしたことがなく、簡単なブラウザ コンソール テストを実行すると、この動作が確認されました。一方を更新すると、もう一方も更新されます。ただし、配列であるオブジェクト値でのみ機能するようです。ここで何が起こっているのか誰でも説明できますか? 少し混乱していますか?