深拷貝與淺拷貝的主要區(qū)別就是對引用類型的拷貝問題.
對象的拷貝可以有3種實現(xiàn)方法
- 1.jquery下的 $.extend(true,{},{....}) //這里的true表示深拷貝
- 2.JSON.parse(JSON.string(a)); 缺點: 無法復(fù)制對象 原型鏈斷了
- 3.自己封裝一個函數(shù)實現(xiàn),如下
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);
image.png
image.png