Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼
更新時(shí)間:2009年11月26日 18:44:30 作者:
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼,需要的朋友可以參考下。
一、 錯(cuò)誤實(shí)現(xiàn)
不少人可能直接就用等號(hào)進(jìn)行賦值了:
var array1 = new Array("1","2","3");
var array2;
array2 = array1;
array1.length = 0;
alert(array2); //返回為空
這種做法是錯(cuò)的,因?yàn)閖avascript分原始類型與引用類型(與java、c#類似)。Array是引用類
型。array2得到的是引用,所以對array1的修改會(huì)影響到array2。
二、 使用slice()
可使用slice()進(jìn)行復(fù)制,因?yàn)閟lice()返回也是數(shù)組。
var array1 = new Array("1","2","3");
var array2;
array2 = array1.slice(0);
array1.length = 0;
alert(array2); //返回1、2、3
三、 使用concat()
注意concat()返回的并不是調(diào)用函數(shù)的Array,而是一個(gè)新的Array,所以可以利用這一點(diǎn)進(jìn)行復(fù)制。
var array1 = new Array("1","2","3");
var array2;
array2 = array1.concat();
array1.length = 0;
alert(array2); //返回1、2、3
四、 測試
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Array Test</title>
<script type="text/javascript">
var array1;
var array2;
function clone1() {
array1 = new Array("1","2","3");
array2 = array1;
array1.length = 0;
alert(array2);
}
function clone2() {
array1 = new Array("1","2","3");
array2 = array1.slice(0);
array1.length = 0;
alert(array2);
}
function clone3() {
array1 = new Array("1","2","3");
array2 = array1.concat();
array1.length = 0;
alert(array2);
}
</script>
</head>
<body>
<input type="button" value="clone1" onclick="clone1()" /><br />
<input type="button" value="clone2" onclick="clone2()" /><br />
<input type="button" value="clone3" onclick="clone3()" /><br />
</body>
</html>
在IE8及FF3.0下均通過測試
不少人可能直接就用等號(hào)進(jìn)行賦值了:
復(fù)制代碼 代碼如下:
var array1 = new Array("1","2","3");
var array2;
array2 = array1;
array1.length = 0;
alert(array2); //返回為空
這種做法是錯(cuò)的,因?yàn)閖avascript分原始類型與引用類型(與java、c#類似)。Array是引用類
型。array2得到的是引用,所以對array1的修改會(huì)影響到array2。
二、 使用slice()
可使用slice()進(jìn)行復(fù)制,因?yàn)閟lice()返回也是數(shù)組。
復(fù)制代碼 代碼如下:
var array1 = new Array("1","2","3");
var array2;
array2 = array1.slice(0);
array1.length = 0;
alert(array2); //返回1、2、3
三、 使用concat()
注意concat()返回的并不是調(diào)用函數(shù)的Array,而是一個(gè)新的Array,所以可以利用這一點(diǎn)進(jìn)行復(fù)制。
復(fù)制代碼 代碼如下:
var array1 = new Array("1","2","3");
var array2;
array2 = array1.concat();
array1.length = 0;
alert(array2); //返回1、2、3
四、 測試
復(fù)制代碼 代碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Array Test</title>
<script type="text/javascript">
var array1;
var array2;
function clone1() {
array1 = new Array("1","2","3");
array2 = array1;
array1.length = 0;
alert(array2);
}
function clone2() {
array1 = new Array("1","2","3");
array2 = array1.slice(0);
array1.length = 0;
alert(array2);
}
function clone3() {
array1 = new Array("1","2","3");
array2 = array1.concat();
array1.length = 0;
alert(array2);
}
</script>
</head>
<body>
<input type="button" value="clone1" onclick="clone1()" /><br />
<input type="button" value="clone2" onclick="clone2()" /><br />
<input type="button" value="clone3" onclick="clone3()" /><br />
</body>
</html>
在IE8及FF3.0下均通過測試
您可能感興趣的文章:
- jQuery中json對象的復(fù)制方式介紹(數(shù)組及對象)
- JavaScript數(shù)組復(fù)制詳解
- JavaScript 數(shù)組的深度復(fù)制解析
- javascript 三種數(shù)組復(fù)制方法的性能對比
- javascript復(fù)制對象使用說明
- js中如何復(fù)制一個(gè)對象并獲取其所有屬性和屬性對應(yīng)的值
- 原生js實(shí)現(xiàn)復(fù)制對象、擴(kuò)展對象 類似jquery中的extend()方法
- 深入理解JavaScript中的對象復(fù)制(Object Clone)
- 改進(jìn)版通過Json對象實(shí)現(xiàn)深復(fù)制的方法
- JavaScript數(shù)組和對象的復(fù)制
相關(guān)文章
JS中處理時(shí)間之setUTCMinutes()方法的使用
這篇文章主要介紹了JavaScript中處理時(shí)間之setUTCMinutes()方法的使用,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06javaScript面向?qū)ο罄^承方法經(jīng)典實(shí)現(xiàn)
很多人都說JavaScript不能算是面向?qū)ο蟮淖兂烧Z言。但是JavaScript的類型非常松散,也沒有編譯器,但是我們可以模仿著其他語言實(shí)現(xiàn)面向?qū)ο蟮姆绞絹韺?shí)現(xiàn)JavaScript的面向編程2013-08-08辨析JavaScript中的Undefined類型與null類型
Undefined與null都是js中的基本數(shù)據(jù)類型,然而正如它們的名字那樣,未初始化和空并不相同,下面我們就來詳細(xì)辨析JavaScript中的Undefined類型與null類型:2016-05-05Javascript學(xué)習(xí)筆記之函數(shù)篇(四):arguments 對象
JavaScript中arguments函數(shù)對象是該對象代表正在執(zhí)行的函數(shù)和調(diào)用它的函數(shù)的參數(shù)。JavaScript 函數(shù)中 arguments 為特殊對象,無需明確指出參數(shù)名,就能訪問它們。2014-11-11