1
我正在嘗試將對象作爲函數參數(作爲引用而不是值)傳遞給對象,並且發現了一些對我來說似乎很奇怪的東西,我想知道爲什麼這是這樣工作。Javascript:引用對象參數,理解賦值差異
好吧,讓我們說我有兩個所謂的onload,以及版本之間有一個微小的變化JavaScript程序...
第一個程序的修改函數賦值參數爲這樣: data.fruit = "Mango";
//This program *will* update the data.fruit in the scope of main() with "Mango".
function modify(data) {
data.fruit = "Mango";
alert(data.fruit+"\nmodify();");
}
function main(){
var data= {"fruit":"Apple"};
modify(data);
alert(data.fruit+"\nmain();");
}
main();
第二個程序的修改函數重新指定參數對象的值,如下所示: data = {"fruit" : "Mango"};
//This program *ignores* updating the object in the scope of main.
function modify(data) {
data = {"fruit" : "Mango"};
alert(data.fruit+"\nmodify();");
}
function main(){
var data= {"fruit":"Apple"};
modify(data);
alert(data.fruit+"\nmain();");
}
main();
也許我誤解了通過引用傳遞,但是如果我分配一個對象的值,在我看來,分配對象的新對象的值應該保持引用。有人可以向我解釋這種行爲嗎?爲什麼在分配這種方式時引用丟失了?
可能的重複[爲什麼此Javascript示例複製變量值而不是通過引用?](http://stackoverflow.com/questions/ 4440872/why-this-this-javascript-example-copy-the-variable-value-instead-of-pass-by-refer) – Gareth 2010-12-16 16:31:53
問題的原因是一樣的。 – Incognito 2010-12-16 17:43:29