深拷贝与浅拷贝的主要区别就是对引用类型的拷贝问题.
对象的拷贝可以有3种实现方法
- 1.jquery下的 $.extend(true,{},{....}) //这里的true表示深拷贝
- 2.JSON.parse(JSON.string(a)); 缺点: 无法复制对象 原型链断了
- 3.自己封装一个函数实现,如下
function copyDeep(obj) {
var newObj = Array.isArray(obj) ? []:{};
if(obj && typeof obj == 'object') {
for ( var key in obj) {
if(obj[key] && typeof obj[key] == 'object') {
newObj[key] = copyDeep(obj[key]);
}else {
newObj[key] = obj[key];
}
}
}
return newObj;
}
var a = [1,[1,2,3],'zzz'];
var b = copyDeep(a);
b[1][0]=99;
console.log(a);