用(function(){…}).call(this)包装文件,而用简单的()包装调用
Wrapping a file with (function() { … }).call(this) versus a call with simply ()
backbone.js源代码使用了一个函数包装器,如下所示:
(function(){
...
}).call(this);
如在http://backbonejs.org/docs/backbone.html#section-185.
更常见的情况是,我看到以下内容被使用:
(function(){
...
})();
这两者的行为在什么时候不同?我认为它们是等效的,但我认为Backbone使用.call(this)
而不是较短的替代方案,这一定有区别。
在第一个示例中,函数内部的this
将是来自调用范围的this
。
在第二个示例中,this
将是window
。
(正如Šime Vidas所指出的,它是严格模式下的undefined
,而不是window
。)
第一个this
在函数中与调用时在作用域中相同,第二个则指窗口对象。
相关文章:
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 将脚本包装在调用函数中
- 如何制作父/包装器组件“;触发器”;或调用子级上的方法
- jquery+调用来自另一个Javascript包装器的函数
- 在$.ajax调用中将附加数据添加到jQuery包装的对象数据中
- 用(function(){…}).call(this)包装文件,而用简单的()包装调用
- 如何将回调函数包装在其他回调函数中并从中调用
- 调用一个按钮点击,该按钮被包装在html页面内的另一个html标记中
- I'我刚刚编译了一些dojo文件:如何在匿名包装器中调用函数
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 如何包装需要异步调用的复杂 if-then 语句
- 当花式盒子包装高度发生变化时,如何调用花式框调整大小函数
- 包装“控制台.log”并保留调用堆栈
- EmberJS actions - 当包装在“actions”中时,从另一个操作调用一个操作
- 如何在立即调用函数表达式(IIFE)中包装JavaScriptrails资产
- 为什么这个由Typescript生成的JavaScript构造函数包装了一个立即调用的函数
- 从jQueryAJAX内部调用包装器函数完成函数
- Nodejs:将整个脚本包装在函数调用中
- 检查是否调用了包装函数
- 如何在JSONP调用中用回调函数名包装响应