为什么在定义导出属性之前调用module.exports仍然有效?

时间:2013-11-23 01:00:30

标签: javascript node.js

我有这段代码:

var config = module.exports = {};

config.foo = {...};

这可以找到,但我想了解原因。

我觉得我可以绕过下面的实现,因为它似乎更有意义导出配置,而不是设置配置等​​于module.exports。

var config = {};
config.foo = {...};

module.exports = config;

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:2)

var config = module.exports = {}; 

相当于

var config = (module.exports = {}); 

module.exports = {};
var config = module.exports;

此处导出的值为{}。由于configmodule.exports只是对同一对象{}的引用,因此属性foo仍然可以通过变量module.exports或{{{{}}}添加到该对象1}}。