这个内部元素指向窗口吗?

问题描述 投票:0回答:1

了解JavaScript中的this。我对这种内在的模糊不清。为什么这指向iife中的窗口对象?这应该指向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();

输出-

bar2,bar2bar1,bar2

我担心第二行的bar1。

javascript this
1个回答
0
投票

Function 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

© www.soinside.com 2019 - 2024. All rights reserved.