两分钟搞定module.exports与exports区别
exports和module.exports区别 1、分析 我们可以从底层实现去理解:在node里每个模块内部都有一个自己的对象module,而该module对象里,有一个子对象exports 在node里,谁require该文件,谁就得到module.exports接口对象 我们发现,每次导出接口成员时通过module.exports.xxx = xxx的方式很麻烦,都得通过点.方式 因此node为了简化操作,专门提供了一个变量:exports = module.exports 也就是说在模块底层实现里,还有这么一句代码 var exports = module.exports 测试如下 2、原理解析 exports是module.exports的一个引用 3、导出单个模块 当导出单个模块时,需要module.exports即可 4、思考进阶(面向对象--引用类型) 为什么导出单个对象不可以使用exports = xxx;直接赋值定义导出??? 原理图:引用数据类型 接下来再看个思考题 结果为hello,为什么呢? 当给obj1重新赋值后,它便指向了新对象,开辟了新的内存空间,如下所示,此时两者已经没有关系