javascript传递对象作为参考

新手上路,请多包涵

我有一个对象,它在函数内部的许多不同函数中传递。这些函数可能会也可能不会更改对象的值,但如果它们确实更改了它,那么我想获取对象的最新更改。

以下是我正在尝试做的事情:

 var ob = {text: 'this is me', name: 'john'}

function (object) {

     changeObject(object);
     customObjectChanger(object);
     callback = function (object) {
          object.text = 'new text';
     }

     callback(object);

     // object value here should be object{text: 'new text', name: 'john'};
}

原文由 Basit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 214
2 个回答

在 JavaScript 中,对象总是通过复制引用传递。我不确定这是否是完全正确的术语,但将传入对象引用的副本。

这意味着在函数执行完毕后,您可以看到对该对象所做的任何更改。

代码:

 var obj = {
  a: "hello"
};

function modify(o) {
  o.a += " world";
}

modify(obj);
console.log(obj.a); //prints "hello world"

话虽如此,因为它只是传入的引用的 _副本_,如果您在函数内部 重新分配 对象,这将 不会 在函数外部可见,因为它只是您更改的引用的 _副本_。

代码:

 var obj = {
  a: "hello"
};

function modify(o) {
  o = {
    a: "hello world"
  };
}

modify(obj);
console.log(obj.a); //prints just "hello"

原文由 Adam Rackis 发布,翻译遵循 CC BY-SA 3.0 许可协议

“对象”在 JavaScript 中不是值,不能被“传递”。

您正在处理的所有值都是引用(指向对象的指针)。

传递或分配一个引用会给出指向同一对象的另一个引用。当然,您可以通过其他引用修改同一对象。

原文由 newacct 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题