2016-03-02 71 views
3

this什么对象在模块范围内引用(我指的是node.js模块)?这点指向模块范围?

console.log(this); 
console.log(this === module); //false 

它没有参考module对象,所以它指向哪里?

+0

你是指node.js模块还是ES6模块? – Bergi

+0

node.js模块 –

回答

3

奇怪的是,它等于module.exports

console.log(this === module.exports); // => true 

就个人而言,我认为这是愚蠢的。但是它就是这样啊。

我不知道为什么我们有引用相同的确切的事情。 this,exportsmodule.exports都引用同一个对象。

我最好的猜测是它有一些向后兼容性。我很容易在这个问题上出错。

+0

你知道这是什么原因吗? –

+0

它应该等于'process' –

+1

@self,我不同意,如果有的话,我希望'this === global'就像浏览器根范围内的this === window'一样。不是我认为我会这么做;只是为了某种一致性。或者说,它是不确定的,因为它没有任何该死的感觉。 – naomik