今天用javascript寫一個小程序,用到數組時有一個小小發現,翻了手邊的書都沒有介紹,所以就發過來獻丑了。 首先我們先定義一個數組,并給它賦值,然后再定義一個空的數組,另空數組=原數組: /*****************代碼段一***************** var array1 = new Array("a", "b", "c"); var array2 = new Array(); Array2 = Array1; /****************************************** 我當時的目的是想用新數組暫時存放原數組的數據,因為我可能改變這些數據這些數據,但是又不想改變原數組,所以我用一個新的臨時數組來存放這些數據。但是運行的結果卻是我操作了新數組,原數的值也改變了。 /*****************代碼段二***************** array2.pop(); array2.push("d"); var tempStr = ""; for (var i=0; i<=array1.length; i++) tempStr += array1[i]; alert(tempStr); /****************************************** 這讓我想起了C/C++里面引用或者指針,可是我翻遍了手邊的各種javascript手冊或者教程都沒有提到這一概念,但這里新數組確實是原數組的一個引用。而用其他方法來初始化這個新數組就不會出現這樣的情況: /****************代碼段三****************** var array1 = new Array("a", "b", "c"); var array2 = new Array(array1); /****************************************** 一些思考:win下javascript的數組對象應該是vc++寫的class,而作者沒有重載"=",所以使javascript的數組直接用"="賦值成為了對源數組的引用。 |
溫馨提示:喜歡本站的話,請收藏一下本站!