了解对象文字中的执行上下文



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

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

这给了我一个输出:

{method:[函数:方法]}

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

我试着读了很多关于这个的书,但我无法破解

在Chrome中,输出看起来像

{method: ƒ}

Internet Explorer

[object Object]   {}

Firefox

Object { method: method() }

它们的意思都是一样的,并且都指对象obj

你实际上是对的。

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

在你的特殊情况下,它是一个物体,你也是对的。

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

运行上面的代码片段,您会发现this的类型是object。

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

this的作用远不止于此。

最新更新