0
有两种基本方式可以看到正在编写的节点模块。第一个设置要导出到其自己的财产上module.exports每个函数或变量:是否将module.exports分配给单独的对象浪费存储器
module.exports.foo = function() {
...
}
,第二个是创建具有您要导出的属性的新对象,并指定module.exports即在文件的结尾:
var FooObject = {
foo: function() {
...
}
};
...
module.exports = FooObject;
第三件事,我有时会看到被设置module.exports到拥有所有你想要导出的属性的对象,但对于这个讨论的目的,这相当于我提到的第一种方法:
module.exports = {
foo: function() {
...
}
}
我们是通过第二种方式来浪费内存吗(创建一个对象并指定module.exports)?我一直认为,由于所有赋值都是引用,因此当您执行module.exports = {...}
时应该创建一个新对象,因此这两个值相当。情况并非如此吗?
并非所有的赋值都是引用,那只是对象(包括函数)。像字符串,数字,布尔值等基元总是被值复制。 – mscdex 2014-10-03 20:34:16
这很好,注意第一个选项意味着你需要模块并调用它...''''''''''' 'FooObject');'...因为第一个是声明一个函数,第二个是声明一个对象。 – incutonez 2014-10-03 21:37:50