我对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
的作用远不止于此。