由于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 // 全局变量修改成功