这里有一只小白在学习Node.js,相关大神请撤离 :)
module.exports和exports的区别
首先回顾一下Js基础知识:
var a = {"name": "Mark"};
var b = a;
console.log(a);
// Object {name: "Mark"}
console.log(b);
// Object {name: "Mark"}
------------------------
var a = {"name": "Mark"};
var b = a;
b.name = "Merry";
console.log(a);x
// Object {name: "Merry"}
console.log(b);
// Object {name: "Merry"}
------------------------
var a = {"name": "Mark"};
var b = {"name": "Merry"};
b.name = "Job";
console.log(a);
// Object {name: "Mark"}
console.log(b);
// Object {name: "Job"}
这里就涉及到了ES5中的引用类型,b为a的引用,两者指向同一块内存,所以前两种情况到b改变时,a也跟着改变。但b被赋值后,两者并不是指向同一块内存,所以互不影响。
如果你对引用类型的理解没问题的话,那么module.exports 与 exports的区别理解起来就很简单了,如下:
- module.exports 的初始值为一个空对象 {}
- exports 是 module.exports 引用
- require(url) 最后返回的是 module.exports,而不是exports
所以当给exports赋值时,会失效,更多相关姿势请查看这里。
is Updating...