理解对象字面量中的执行上下文

Understanding execution context inside object literal

我对 javascript 编程还很陌生,我想了解 javascript 程序是如何工作的。因此,我阅读了执行上下文、执行堆栈等概念。在了解了一些执行上下文后,我了解到 "this" 指的是执行上下文。 所以我尝试在对象字面量中打印执行上下文来检查执行上下文,因此我编写了以下代码。

var obj = {
    method: function() {
        console.log(this);
    }
};
obj.method();

这给了我一个输出:

{ method: [Function: method] }

看到这里我有两个问题,就是上面的代码知道执行上下文是否正确?如果是,那么执行上下文不应该是一个 Object { 方法: function() } 而不是它给出的输出。

我试着阅读了很多关于此的内容,但我无法破解它。

其实你是对的。

this指的是JavaScript代码执行的环境

而且在您的特定情况下,它是一个对象也是正确的。

var obj = {
  method: function() {
      console.log(typeof this);
  }
};
obj.method();

运行上面的代码片段,你会发现this的类型是对象。

这基本上意味着您的环境 (this) 是一个对象,其中包含一个名为 method 的 属性,它是一个函数。

this 远不止于此。

在 Chrome 中输出看起来像

{method: ƒ}

Internet Explorer

[object Object]   {}

火狐

Object { method: method() }

它们都是同一个意思,指的是对象obj