【发布时间】:2013-05-28 15:22:20
【问题描述】:
我有一个对象,它在函数内的许多不同函数中传递。这些函数可能会也可能不会改变对象的值,但如果他们确实改变了它,那么我想获得对象的最新更改。
以下是我想要做的:
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 一直自动通过引用传递对象。您是否尝试过上面的代码,看看它是否已经完成了您想要的操作?
-
不,我没有。我确实读过它。只是想在这里确认一下。
-
JavaScript 不 Pass By Reference。但是,JavaScript在对象被传递或分配时不会复制对象。因此,它是具有不同名称的 same 对象 - 对对象所做的更改(从任何名称)都会影响所述对象。
-
这取决于您所说的“通过引用”。在我看来,“同一个对象,不同的名字”就是引用的定义。
-
@jcsanyi 这就是为什么定义术语和避免歧义很重要。 (维基百科的文章确实承认该术语是模棱两可的,这就是为什么我尝试避免使用“通过引用”,除非明确意味着更改本地名称绑定会影响调用者。)
标签: javascript variables object reference pass-by-reference