我有一个对象,它在函数内部的许多不同函数中传递。这些函数可能会也可能不会更改对象的值,但如果它们确实更改了它,那么我想获取对象的最新更改。
以下是我正在尝试做的事情:
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/