其实exports跟require都只是一个函数的参数,所以并不是全局的属性。
具体函数实现方式如下:
(function(exports,require,module,__filename,__dirname){
exports = module.exports = {};
return module.exports;
})
注意此处导出的是module.exports
重点来了:
module.exports = {
a,b,c,d
}
require之后打印出来正确的结果
exports = {
a,b,c,d
}
require之后打印出来是个空对象{}
我自己的理解:
exports = module.exports = {};
module.exports把值赋给exports此时这两个对象都指向
{
a,b,c,d
}
由于函数return的是module.exports所以此时都指向这个对象
(重点在于module.exports指向的是谁,因为函数return的是module.exports)
所以能打印出来想要的结果。
用exports导出时:
module.exports指向的是空对象{},所以再用exports导出任何东西都是空对象{}