module.exports
和exports
本质上,
exports
是module.exports
对象的引用
JS引用
var a = {x: "2"};
var b = a;
console.log(a); // { x: '2' }
console.log(b); // { x: '2' }
b.x = 3;
console.log(a); // { x: 3 }
console.log(b); // { x: 3 }
b = {x: 1};
console.log(a); // { x: 3 }
console.log(b); // { x: 1 }
console.log(module.exports === exports); // true
变量
a
是一个对象,而b
是a
的引用(a
、b
指向同一块内存),所以输出相同b
修改原对象后,因为a
、b
指向同一块内存,所以修改会体现在a
上当
b
被覆盖时,b
指向了一块新的内存;而a
的指向不变,所以输出不同
module.exports
和exports
的区别
module.exports
的初始值是一个空对象{}
exports
是module.exports
对象的一个引用require()
返回值的是module.exports
对象,而非exports
重置
module.exports
或exports
,指向一个新对象时,会断开二者间的引用关系
使用方式
以下两种写法相同,
module.exports
指向一个新对象,断开二者间的联系-
再使用
exports = module.exports
使exports
指向新对象,恢复二者间的联系exports = module.exports = {...}; /* * module.exports = {...}; * exports = module.exports; */
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。