在阅读 annotated Backbone source code 时,我遇到了这样的作业:
var Events = Backbone.Events = {};
我明白发生了什么:一个空对象被分配给 Backbone.Events
,然后又被分配给 Events
。
为什么要这样写作业?
总的来说,我知道多次左手作业不是一个好主意,因为如果这样做:
var a = b = c = 1;
b
和 c
被提升到全局命名空间,但是在 backbone 的情况下,Events
是一个局部变量,而 Backbone.Events
绑定(bind)到 Backbone
对象,所以这里没有范围污染——这是正确的吗?
那么它是不是这样写的,所以在 Events
中获取 Backbone.Events
的“副本”,因为在 JavaScript 中对象总是通过引用传递?这意味着对 Events
的更改也将应用于 Backbone.Events
因为它实际上是同一个对象,但我看不出这有什么好处,但也许我错过了一些东西这里?也许这真的只是一条捷径?
var Events = {};
var Backbone.Events = {};
编辑:上面的例子实际上是错误的,我是因为Guffa的回答才意识到这一点的。
最佳答案
是的,Events
变量将指向与 Backbone.Events
属性相同的对象。它是以下内容的缩写形式:
Backbone.Events = {};
var Events = Backbone.Events;
关于javascript - Backbone 源代码中的多个左手分配——它是微优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134902/