2013-11-23 28 views
1

我有這樣的代碼:爲什麼在定義導出屬性之前調用module.exports時仍然工作?

var config = module.exports = {}; 

config.foo = {...}; 

這找工作,但我想知道爲什麼。

我覺得我可以把我的頭圍繞下面的實現,因爲它似乎更有意義導出配置,而不是設置config等於module.exports。

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

module.exports = config; 

有人可以對此有所瞭解嗎?

回答

2
var config = module.exports = {}; 

相當於

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

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

值抵達該處出口是{}。因爲configmodule.exports只是對同一對象{}的引用,所以屬性foo仍可以通過變量module.exportsconfig添加到該對象。

相關問題