Node.js中module.exports和exports的区别和赋值问题

在Node.js环境中,module对象表示模块,一个js文件就是一个模块。module对象的exports属性表示导出的本模块成员,为外界提供访问接口。exports对象与module.exports功能类似,写法更简便。二者在初始化时指向的是同一内存地址,默认值为{},其实是在文件顶部省略了var exports=module.exports这一语句。使用requir()方法加载模块,返回值是被加载模块中module.exports的值,并不是exports对象的值。

1.直接为exports添加或修改属性将同步修改module.exports的属性,因为二者依然指向同一内存块。程序结果是:

result=module.exports={age:18}




2.如果为exports对象直接赋值,exports对象将指向另一内存地址,而module.exports依然指向原先的地址。导出的结果为{}。




3.如果为module.exports直接赋值,module.exports将指向新的地址,并导出module.exports的新值。exports依然指向原先的地址,二者断开联系。



综上所述,不能为exports对象直接赋值。可以为exports或module.exports挂载属性,或为module.exports直接赋值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值