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