【发布时间】:2014-05-11 07:22:13
【问题描述】:
我有一个由 require 加载的 JavaScript 文件。
// loaded by require()
var a = this; // "this" is an empty object
this.anObject = {name:"An object"};
var aFunction = function() {
var innerThis = this; // "this" is node global object
};
aFunction();
(function(anyParameter){
console.log(anyParameter.anObject);
})(
this // "this" is same having anObject. Not "global"
);
我的问题是:this in var a = this; 是一个空对象,而函数中的 this 语句是 node.js 全局对象的影子。我知道this 关键字在函数中是不同的,但我不明白为什么首先this 不等于全局,而函数中的this 等于全局。
node.js 如何在函数作用域内将global 注入this,为什么不将其注入到模块作用域?
【问题讨论】:
-
this的值被确定为 JavaScript 语言本身的核心特性(尽管 NodeJS 可能通过 JavaScript 的语言特性设置该值)。您可能需要阅读一些thisdocs。请注意,文档通常假设 JS 在浏览器中运行,因此“全局对象”将是window而不是 NodeJS 全局对象,但概念是相同的。一些更相关的文档是NodeJS'sthisdocs。 -
我知道为什么两个
this值不同。我的问题是 node.js 为什么以及如何在函数范围内将global注入this,而不是外部范围。它可以将global注入到this'es 中,使它们保持不同。 -
你怎么称呼
aFunction? -
@GökçerGökdal:我认为this answer 至少部分回答了您的问题。
标签: javascript node.js