【发布时间】:2012-05-17 17:55:39
【问题描述】:
我不明白为什么只有对象可以很好地导出。看那个:
第一个文件
var a = exports.a = {};
var b = exports.b = 0;
exports.xxxxx = function(){
a.hello = 'help';
b = 104;
};
第二个文件
var a = require('firstfile').a;
var b = require('firstfile').b;
module.exports = function(){
console.log(a); // {hello:'help'}
console.log(b); // 0
};
为什么?
出口 b 的解决方案是这样的:
第一个文件:
...
a.hello = 'help';
exports.b = 104; // (add exports)
...
第二个文件:
...
var b = require('firstfile');
...
console.log(b.b); // 104
为什么?
编辑
我想我明白了。
变量a只是一个参考! 我给不懂的人解释一下:
- 读取第一个文件时,
a = {}, b = 0 - 当我们更改 b 时,b 已更改,但不是模块(导出)!!
- 这很正常,
exports.b = 104// 我们改变了模块的值!谁是必需的。
现在,为什么对象不同?
- 因为在执行文件 2 时。 (执行一次),a = {} 的值。
- 但它显示 {xxx:xxx}
- 这是因为文件执行时a的值不是{},而是这个对象的引用。
- 所以,当我们需要获取这个对象时,我们会搜索所有引用。
记住两件事很重要:
- 函数所需的模块被读取一次!需要在函数中要求查看更改。
- 对象库存参考。
再见! 希望对您有所帮助!
【问题讨论】:
标签: node.js