学习关于this在 JavaScript 中。我对 iife 内部的范围感到困惑。为什么 this 指向 iife 中的 window 对象?这应该指向 myObj,因为它位于 myObj 内部。
window.foo = "bar1";
var myObj = {
foo: "bar2",
func: function() {
var self = this;
console.log(this.foo + ", " + self.foo);
(function xx() {
console.log(this.foo + ", " + self.foo)
}());
}
}
myObj.func();
输出 -
酒吧2,酒吧2
栏 1、栏 2
我担心第二行的 bar1 。
功能xx
称为 IIFE,这是一个简单的函数调用。根据规范,在简单的函数调用中,全局对象(浏览器中的窗口)被分配给this
.
window.foo = "bar1";
var myObj = {
foo: "bar2",
func: function() {
var self = this;
console.log(this.foo + ", " + self.foo);
(function xx() {
console.log(`this === window :`, this === window);
console.log(this.foo + ", " + self.foo)
}());
}
}
myObj.func();
参考:
由于以下代码不是严格模式,并且因为this
不是由调用设置的,这将默认为全局对象,即浏览器中的窗口。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)