前端学习之路:exports 与module.exports的区别

exports是module.exports的引用。你的模块最终返回module.exports给调用者,而不是exports。

    Node.js 在初始化时就执行了一句 exports = module.exports , 所以 exports 指向了 module.exports 相同的内存, 之后你若改变 module.exports 所指向的內存 , 你必須重新再执行一句 exports = module.exports , 才能指向正确的实例, 之后再赋值才有效.

    例如刚开始时 module.exports 指向实例 A , exports 指向 module.exports , 即也是指向相同的实例A. 

之后你执行 module.exports = "xxx" , module.exports 指向了別的内存区 (指向了实例B), 而此时 exports 的引用并没有改变, 仍然指向原來的实例A. 所以在模块输出时就没有效果了. 模块输出时只会输出 module.exports 这个引用所指向的东西. 因此你对exports 所做的任何属性的改变, 只是在对实例A 做改变, 对实例B 没有作用.

    你可以随意往exports加属性(因为是属性,便也会向module.exports上加属性,但是如果让exports=xxx,即重新定义exports,那你只是让exports成为另一个引用,module.exports的值仍然不便),理解到exports是module.exports的引用才是最关键的。所以不能直接向exports赋值



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值