7

主干.js 源代码使用这样的函数包装器:

(function(){
    ...
}).call(this);

http://backbonejs.org/docs/backbone.html#section-185所示。

更常见的是,我看到使用以下内容:

(function(){
    ...
})();

这两者的行为何时不同?我的印象是它们是等价的,但我认为肯定存在差异,因为 Backbone 使用.call(this)的是较短的替代方案。

4

2 回答 2

8

在第一个示例中,this函数内部将this来自调用范围。

在第二个例子中,this将是window

(正如 Šime Vidas 所指出的,它undefined处于严格模式,而不是window.)

于 2012-07-20T22:59:13.247 回答
4

this一个在函数中与调用时在作用域中相同,第二个 this 将引用窗口对象。

于 2012-07-20T22:59:22.957 回答