javascript传递对象作为引用

原文 标签 javascript variables object reference pass-by-reference

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

以下是我想要做的事情:

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'};    
}

最佳答案

在 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"

关于javascript传递对象作为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16880418/

相关文章:

javascript - 动态创建JS对象

javascript - python selenium 将键发送到只读文本框

java - 从“SamsTeachYourself Java”中澄清该Java“Activity ”

javascript - 如何在 Selenium 中选择 aria-autocomplete 输入字段?

list - Mathematica - 初始化变量列表

javascript - 在js文件中使用php var

c - 在 c 中使用数组作为变量的结构

javascript - 从嵌套在对象中的数组中随机选择元素的逻辑,该对象进一步嵌套在数组中

javascript - 在Javascript中的一系列标签上更改背景颜色

javascript - 悬停时展开/折叠 div - 不活动时不折叠