我见过两种使用 IIFE 的方法(我知道还有更多):
(function(){
console.log(this);
}).call(this);
(function(){
console.log(this);
})();
有什么理由使用.call(this)
在第一个上?惯于();
在函数内产生相同的上下文?
这取决于代码的执行位置。
.call(this)
显式设置this
到你传递给的对象.call
。仅使用();
将设置this
to window
(or to undefined
在严格模式下)。
如果代码在全局范围内执行,它将是相同的。如果没有,那么你会得到不同的结果this
不指window
(or is undefined
).
Example:
var obj = {
foo: function() {
(function(){
console.log(this); // this === obj
}).call(this); // this === obj
(function(){
console.log(this); // this === window
})();
}
};
obj.foo();
有关更多信息this on MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)