javascript - Backbone 源代码中的多个左手分配——它是微优化吗?

标签 javascript backbone.js scope variable-assignment

在阅读 annotated Backbone source code 时,我遇到了这样的作业:

var Events = Backbone.Events = {};

我明白发生了什么:一个空对象被分配给 Backbone.Events,然后又被分配给 Events

为什么要这样写作业?

总的来说,我知道多次左手作业不是一个好主意,因为如果这样做:

var a = b = c = 1;

bc 被提升到全局命名空间,但是在 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/

相关文章:

javascript - 简单的 Backbone.js 路由器? (页面层次结构 + 查询字符串)

perl - Perl 的词法范围的编译指示是如何实现的?

javascript - 主干触发事件变量

java - Backbone marionette 列出来自服务器的值

javascript - 我可以从作用域之外访问作用域变量吗?

c++ - 从头文件调用函数

javascript - 如何避免在加载页面时看到 Cufon 字体替换工具的渲染?

javascript - 我需要手动关闭 Mongoose 连接吗?

javascript - 使用javascript捕获在android虚拟键盘上键入的键

javascript - 使用指令/$compile 将 HTML 设置为属性