javascript - 尝试理解 javascript 中的 `this`

标签 javascript scope

我有一个具有多种功能的对象:

var someScopeScopedObject = {
  myFunction1: function () {
    console.log('foo');
  },

  myFunction2: function () {
    this.myFunction1();
  }

 init: function (callback) {
    callback();
  }
}

因此,如果我调用 someScopeScopedObject.myFunction2 就可以正常工作

但是如果我执行 someScopeScopedObject.init(someScopeScopedObject.myFunction2) ,则会收到错误 this.myFunction1 未定义

当我以这种方式调用函数时,为什么 this 无效?

最佳答案

关键字this指的是函数作用域。不是全局范围。您声明一个名为 myFunction2 的函数,this 引用此函数的作用域,而不是声明此函数的作用域。

这与 C# 等语言不同,其中 this 指的是类的当前实例,无论您是否在另一种方法中。

关于javascript - 尝试理解 javascript 中的 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818620/

相关文章:

javascript - 缩放图像以最适合视口(viewport)

javascript - 日期显示顺序未按谷歌折线图的预期显示

javascript - typescript :需要在从异步函数读取的全局范围内声明一个常量

javascript - 将 'a' 作为此箭头函数的输入是错误吗?

dependency-injection - 依赖注入(inject) : How to construct a class that depends on runtime parameters?

javascript - 使用 Firefox 聚焦后单击另一个输入时进行检测

Javascript 迭代一个数组,统计每个元素出现的次数并将其推送到一个对象

javascript - 通过点击 HTML/JS 文档中的图像来加载视频

scope - C++ 的 shared_ptr 在 Rust 中的等价物是什么?

ruby - 作用域和 block