2017-08-04 21 views
1
function myFunction() { 
var a = {}; 
a.myArray = ["Saab", "Volvo", "BMW"]; 
var b=a.myArray; 
b.push("Chevy"); 
alert(a.myArray);} 

在上述函數中,我創建了一個對象「a」並創建了一個數組「myArray」。現在我在「b」中複製該數組並修改數組「b」。但爲什麼它會改變a.myArray以及如何避免這種情況?如何更改複製到不同對象的JSON的引用

+1

因爲您正在將a.myArray的引用複製到b中。你不是從a.myArray創建一個新的數組。 – WilomGfx

回答

1

因爲您分配了該數組的引用。所以你實際上是用不同的變量名稱來引用相同的數組。

如果你想單獨陣列

var b = a.slice(); 

,讓你與你的初始排列的相同值的新陣列。

slice()

的slice()方法返回一個陣列的一部分的一個淺拷貝到從開始到結束(不包括端部)中選擇一個新的數組對象。原始數組不會被修改。

相關問題