数组对象不能简单的赋值,因为这样是让两个变量指向同一个地址,任意一个变量改变了,另一个的值也会跟着改变,
所以需要通过一些克隆的方法,复制一个相同的对象,对该对象进行操作。
(1)遍历数组逐项添加到新数组中
Array.prototype.clone=function(){ var a=[]; for(var i=0,l=this.length;i<l;i++) a.push(this[i]); return a; }
(2)通过Array对象的slice方法
slice方法是通过参数start和end的传入值来返回数组中的一段,该方法不对原数组进行操作。我们通过slice(0)可以使其返回所有项。
Array.prototype.clone=function(){ return this.slice(0); }
(3)通过Array对象的concat方法
concat方法是用来实现数组的合并的。通过和一个空函数的合并,即可实现我们的克隆功能。
Array.prototype.clone=function(){ return [].concat(this); } //或者 Array.prototype.clone=function(){ return this.concat(); }
原文:http://www.cnblogs.com/susan-90/p/4997457.html