A:
require 用来加载代码
module.exports初始值为一个空对象{}
而exports是对某个对象的引用
require('./btnScale'); // 加载btnScale脚本,require内为脚本位置
module.exports = XXX;(假设为某个对象E)
exports = module.exports;
此时module.exports为对象E,而exports为对象E的引用
B:
module.exports = XXX;(假设为某个对象E)
exports = module.exports;
module.exports = XXXXXX;(假设此时为某个对象F)
当module.exports 指向新的对象(假设为对象F)时,exports 断开了与 module.exports 的引用,此时exports仍为对象E的引用,即exports仍指向原来存放对象E的内存,而module.exports 指向了存放对象F的内存。
如果想让exports重新指向module.exports ,则可以写成 exports = module.exports;
结论:module.exports 被改变的时候,exports不会被改变。
注:{ }为空对象
theObject = theObject || { };
module.exports = new ImageLoader()即让module.exports等于ImageLoader对象。