當前位置:成語大全網 - 新華字典 - 深拷貝和淺拷貝的異同以及實現方式

深拷貝和淺拷貝的異同以及實現方式

相同點:

深拷貝和淺拷貝都是用於對復雜數據類型進行復制。

差異:

其區別在於深拷貝是對原數據進行遞歸復制,並存到壹個新地址,從而使新老數據互不影響。

而淺拷貝只是對原數據的地址進行拷貝,從而會使新老數據相互影響。

常用實現方法:

深拷貝:

1.遞歸復制(全部適用)

function duplicate(obj) {

var newObj = null;

If(obj !== null && typeof(obj)==obj){

newObj=Obj instanceof Array?[]:{};

For (var i in obj){

newObj[i] = duplicate[i];

}

}else{

newObj = obj;

}

return newObj;

}

2.JSON.stringify(obj);

關於這個方法有壹個缺點就是 不能拷貝function和undefine( 在火狐上直接報錯error,而在谷歌上會直接忽略掉相關屬性) 。因為這是通過把數據轉化為字符串的形式賦值給壹個新地址。

淺拷貝:

1.函數實現

function simpleDuplicate(obj){

Var newObj ={};

for(var I in obj){

If(obj.hasOwnProperity[i]){

newObj[i] = obj[i];

}

}

return newObj;

}

2.各種賦值、合並刪除操作。