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都使用最后一个变量值

javascript - 如何增加 Javascript 变量名

MySQL:在同一 SELECT 语句中重新使用用户定义的变量

Python条件变量设置

javascript - JSON 操作,重写一个新数组,将数据附加为子数组

javascript - 将字符串转换为对象数组

javascript - 我想在删除按钮旁边添加编辑按钮,这样我就可以编辑我已经插入的值

javascript - Kyle Simpson 的 Function-Light JavaScript 中令人困惑的变量赋值 var[key] =

c++ - 从对象内部返回值给 main

javascript - 将数组传递给 var 函数