“this"在私有函数内部调用时,指的是窗口

"this" refers to window when called inside a private function

本文关键字:调用 窗口 内部 函数 quot this      更新时间:2023-09-26

我还在想"这个"。这里我在函数sayFoo中使用"this"。

当我从sayFoo()中记录它时,我很惊讶"this"是窗口。

关于上下文,我有什么不理解的地方?

myCoolThing = {
  foo: "1",
  doSomething: function() {
    sayFoo();
    function sayFoo() {
      console.log(this.foo);
    }
  }
}
myCoolThing.doSomething(); // Errors with "foo" undefined

当您调用sayFoo时,它被调用而不将对象作为上下文。只有作为对象属性的函数才能以上下文作为父对象调用。

myCoolThing = {
  foo: "1",
  doSomething: function() {
    sayFoo.call(this);
    function sayFoo() {
      console.log(this.foo);
    }
  }
}

关于上下文的更多信息。

function .prototype.call()简单地调用this设置为调用它的第一个参数的函数(在这种情况下,是对象,因为这是this在函数中作为对象的属性)。