javascript - "this"在私有(private)函数内部调用时引用窗口

标签 javascript oop

我仍然在思考“这个”。这里我在函数 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);
    }
  }
}

More info on context .

Function.prototype.call()只需将 this 设置为调用它的第一个参数来调用该函数(在本例中,该参数是对象,因为这就是函数中的 this )对象的属性)。

关于javascript - "this"在私有(private)函数内部调用时引用窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24236972/

相关文章:

javascript - 滚动过去后如何固定标题

javascript - 'touchstart' 事件是否有与点击事件对应的 e.PageX 位置?

javascript - Chrome 控制台中的奇怪行为

c++ - 函数内部的递归函数c++

c++ - C++中的面向对象设计问题

javascript - 使用 jQuery Stopwatch 将毫秒从计时器传递到表单提交的输入

javascript - 如何控制在 AngularJS 中应用属性指令的顺序?

c# - 将 parent 转换为 child

javascript - 摆脱多余的方法定义

C++ Matrix 类层次结构