var ary1=[1,2,3,4,5];
es5:
方法一:适用 单层 数组嵌套的深拷贝
var ary2 = ary1.concat();
方法二:适用 多层 数组嵌套的深拷贝
var ary2 = JSON.parse(JSON.stringify(ary1));
//此方法适用于Oject的深度拷贝,因为Array属于Oject类型,所以也适用于此处;
//需要注意的是:作为Oject的深度拷贝时,要复制的function会直接消失,所以这个方法只能用在单纯只有数据的对象。
es6:
方法三:适用 单层 数组嵌套的深拷贝
var ary2 = [...ary1];
方法四:适用 单层 数组嵌套的深拷贝
var [...ary2] = ary1;
方法五:通过递归实现 多层 的深拷贝
function deepCopy(source){
if (typeof source != "object") {
return source;
}
if (source == null) {
return source;
}
var newObj = source.constructor === Array ? [] : {}; //开辟一块新的内存空间
for (var i in source) {
newObj[i] = deepCopy(source[i]);
}
return newObj;
}