我在看Backbone的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 [名称]“值,它既可以是现有数组,也可以设置为空数组。奇怪的部分是将对象推入该数组的下一行。推后,如果你现在检查“this._events [name]”的值,它现在在它的数组末尾有这个新对象。对我来说,看起来这两个实质上是连接;当你更新一个时,另一个也会更新。
我以前没有遇到类似这样的事情,并且执行简单的浏览器控制台测试来确认此行为。你更新一个,另一个也得到更新。它似乎只能用于数组的对象值。任何人都可以解释这里发生了什么?我有点困惑?