这是一个虚拟示例:
const obj = {foo: '123'};
function logObj(obj) {
setInterval(function() {
console.log(obj);
}, 100)
}
function overWrite(obj) {
setTimeout(function(){
console.log('overwriting')
obj = {foo: 'bar'}
}, 1000);
}
logObj(obj)
overWrite(obj)
我期望每 100 毫秒看到一次 { foo: '123' }
,直到调用 overwriting
,然后看到 { foo: 'bar' }
。然而该对象永远不会被覆盖,我总是看到 123。
编辑
我不想只更改其中一个键;事实上,我确实想替换整个对象,因此 obj.foo = 'bar'
不是解决方案
最佳答案
不要使用 obj = {foo: 'bar'}
而是 obj.foo= 'bar'
const obj = {
foo: '123'
};
function logObj(obj) {
setInterval(function() {
console.log(obj);
}, 100)
}
function overWrite(obj) {
setTimeout(function() {
console.log('overwriting')
obj.foo = 'bar'
}, 1000);
}
logObj(obj)
overWrite(obj)
关于Javascript 通过引用传递,以便稍后在另一个文件中覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305318/