this
引用全局对象然而,以下内容:
var globalThis = this;
function a() {
console.log(typeof this);
console.log(typeof globalThis);
console.log('is this the global object? '+(globalThis===this));
}
a();
...放在文件foo.js
中产生:
$ nodejs foo.js
object
object
is this the global object? false
答案 0 :(得分:6)
在Node.js中,我们在模块中编写的代码都将包含在函数中。您可以在此detailed answer中详细了解此信息。因此,模块顶层的this
将引用该函数的上下文,而不是全局对象。
您实际上可以使用global
object来引用实际的全局对象,例如
function a() {
console.log('is this the global object? ' + (global === this));
}
a();