module是一個對象,每一個模塊中都有一個module對象,module是當前模塊的一個引用。module.exports對象是Module系統建立的,而exports能夠看做是對module.exports對象的一個引用。在模塊中require另外一個模塊時,以module.exports的值爲準,由於有的狀況下,module.exports和exports它們的值是不一樣的。module.exports和exports的關係能夠表示成這樣: ui
// module.exports和exports相同的狀況 var m = {}; // 表示 module var e = m.e = {}; // e 表示 exports, m.e 表示 module.exports m.e.a = 5; e.b = 6; console.log(m.e); // Object { a: 5, b: 6 } console.log(e); // Object { a: 5, b: 6 }
// module.exports和exports不一樣的狀況 var m = {}; // 表示 module var e = m.e = {}; // e 表示 exports, m.e 表示 module.exports m.e = { c: 9 }; // m.e(module.exports)引用的對象被改了 e.d = 10; console.log(m.e); // Object { c: 9 } console.log(e); // Object { d: 10 }