由于commonJs 模块化使用的是值传递,ES6为引用传递,
所以node中require方法返回值不管对象还是基本类型都是不会互相影响的。
方法:返回对象内部使用引用对象赋值
obj.js
class C {
constructor() {
this.S = null
}
init(value) {
this.S = { s: value }
}
}
var obj = new C()
obj.init('Hello')
console.log(obj.S.s)
module.exports = obj
index.js
var obj = require('./obj')
obj.init('Hi')
console.log("index.js: " + obj.S.s)
结果:
obj.js中打印:obj.js: Hello
index.js中打印:index.js: Hi // 全局变量修改成功
文章通过一个示例展示了在Node.js中,即使require方法返回的对象内部使用了引用对象赋值,不同模块间通过CommonJS加载的模块仍然不会互相影响,但全局变量的修改可以被其他模块感知到。这突显了CommonJS中值传递的特性以及模块间的隔离性。
930

被折叠的 条评论
为什么被折叠?



