理解对象字面量中的执行上下文
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
。
我对 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
。