Javascript 通过引用传递,以便稍后在另一个文件中覆盖

标签 javascript node.js

这是一个虚拟示例:

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/

相关文章:

javascript - Angular ng-view 不起作用

javascript - 简单地管道到响应对象如何将数据呈现给客户端?

Javascript - 我创建了一个包含多个值的表单,但只有一个正在计算?

javascript - 原型(prototype) javascript 无法正常工作

node.js - SailsJS 如何对实例方法和从另一个模型填充的实例方法应用排序?

javascript - 尝试动态更改导航栏中的 "active"类 - Node.js/Express/Handlebars

javascript - Kurento WebRTC 不录音

javascript - 为所需的箭头功能设置此项

javascript - HTML 此声明

javascript - 如何在 Jest 中的异步函数中抛出错误