1. 浅层的数组或对象拷贝(也就是数组中不包含对象或数组)
****1.1 通过slice或者concat方法****
例如:数组2复制数组1
var arr2 = arr1.slice(0);
var arr2 = arr1.concat();
****1.2 遍历数组或对象方法****
var simpleCopy = function(o){
if (o instanceof Array)
{
var n = [];
for (var i = 0; i < o.length; ++i)
n[i] = o[i];
return n;
}
else if (o instanceof Object)
{
var n = {} ;
for (var i in o)
n[i] = o[i];
return n;
}
}
2. 实现拷贝包含对象或者数组的这种情况呢?那么就通过递归拷贝来实现。
var deepCopy = function(o) {
if (o instanceof Array)
{
var n = [];
for (var i = 0; i < o.length; ++i)
n[i] = deepCopy(o[i]);
return n;
}
else if (o instanceof Object)
{
var n = {} ;
for (var i in o)
n[i] = deepCopy(o[i]);
return n;
}
else return o;
}
网友评论