require
加载。// 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"
);
我的问题是:在变量a = this;
中,this
是一个空对象,而函数中的this
语句却是node.js全局对象的影子。我知道this
关键字在函数中有所不同,但我无法理解为什么第一个this
不等于全局对象,而函数中的this
等于全局对象。
Node.js如何将全局对象global
注入到函数作用域中的this
中,为什么它不将其注入到模块作用域中?
this
的值是由其核心特性决定的(尽管 NodeJS 可以通过 JavaScript 语言特性设置该值)。你可能需要阅读一些this
文档。请注意,这些文档通常假设 JS 运行在浏览器中,因此“全局对象”将是window
而不是 NodeJS 全局对象,但概念相同。一些更相关的文档是 NodeJS 的this
文档。 - ajp15243this
值不同。我的问题是为什么和如何 node.js 在函数作用域中将global
注入到this
而不是外部作用域。它可以将global
注入到两个this
中,使它们保持不同。 - Gökçer GökdalaFunction
? - ajp15243this
的见解,谢谢。据我所知,this
根据函数被调用的位置而不同。但是我仍然无法找出为什么和如何node.js以不同的方式注入global
。注意:我已经添加了对aFunction
的调用,就像我调试时一样。 - Gökçer Gökdal