Я смотрел исходный код Backbones v1.0.0 и заметил что-то интересное. В Backbone.Events объект метод «на», кажется, связывая переменной со значением объекта:Связывание переменных javascript с объектами.
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;
},
«события» переменная устанавливается в "this._events [ name] ", который является либо существующим массивом, либо установленным в пустой массив. Странная часть - это следующая строка, которая толкает объект в этот массив. После нажатия, если вы теперь проверите значение «this._events [name]», теперь у него есть этот новый объект в конце его массива. Для меня это похоже, что два по существу связаны с ; когда вы обновляете один, другой тоже обновляется.
Я раньше не сталкивался с чем-то подобным, и простую проверку на консоль браузера подтверждает это поведение. Вы обновляете один, а другой получает обновление. Однако, похоже, это работает только с объектными значениями, которые являются массивами. Может ли кто-нибудь объяснить, что здесь происходит? Я немного смущен?