backbone.js源代码使用这样的函数包装器:
(function(){
...
}).call(this);
见http://backbonejs.org/docs/backbone.html#section-185。
更常见的是,我看到以下用过:
(function(){
...
})();
这两者的行为何时不同?我的印象是它们是等价的,但我认为必须有区别,因为Backbone使用.call(this)
而不是更短的替代方案。
答案 0 :(得分:8)
在第一个示例中,函数内部的this
将是来自调用范围的this
。
在第二个示例中,this
将为window
。
(正如ŠimeVidas所说,它是严格模式的undefined
,而不是window
。)
答案 1 :(得分:4)
第一个this
与函数调用时的函数相同,对于第二个,它将引用窗口对象。