無意間看到JS的數組可以把對象,數組填充進一個新的數組中。然後便產生了一個疑問:填充進去的數組和對象的原值被改變時,填充進去的是否也會改變?
經測試發現:
數組中填充的爲單一變量時,僅僅爲賦值操作
數組中填充的爲另一數組或者是一個對象時,對被填充的數組操作和對原數組或對象操作,結果都將會改變雙方的值
測試代碼如下~
<html>
<head>
<meta charset="utf-8" />
<title>Example </title>
</head>
<body>
<h1>Test!!!</h1>
<script>
///js數組可以存儲變量的值
document.write("<p>本測試爲測試出,在數組中存儲的變量,當原變量的值改變時,數組中的值是否會改變~</p>");
var ktemp="one";///單一變量
function createObj(name,age){
var obj=new Object();
obj.name = name;
obj.age = age;
return obj;
}
var ktemp2=createObj("hh",20); //對象
var ktemp3=Array(3); //數組
ktemp3[0] = 0;
ktemp3[1] = 1;
ktemp3[2] = 2;
var ktt=Array();
ktt[0] = ktemp;
ktt[1] = ktemp2;
ktt[2] = ktemp3;
ktemp="two";
ktemp2.name = "HH";
ktemp3[0] = -1;
function show1(str1,str2){
document.write("<p>" + str1 + ":" + str2 + "</p>");
}
show1(ktt[0],ktemp);//單一變量
show1(ktt[1].name,ktemp2.name);//對象原值改變
show1(ktt[2][0],ktemp3[0]);//數組原值改變
ktt[0] = "three";
show1(ktt[0],ktemp);//單一變量
ktt[1].name="end!";
show1(ktt[1].name,ktemp2.name);///新數組中對象值改變
ktt[2][0] = 2;
show1(ktt[2][0],ktemp3[0]);///新數組中值改變
</script>
</body>
</html>
如有BUG,歡迎指出~
聯繫方式:[email protected]
不勝感激~