對淺拷貝和深拷貝的理解

淺複製 —-只是拷貝了基本類型的數據,而引用類型數據,複製後也是會發生引用,咱們把這種拷貝叫作「(淺複製)淺拷貝」,換句話說,淺複製僅僅是指向被複制的內存地址,若是原地址中對象被改變了,那麼淺複製出來的對象也會相應改變。數組

深複製 —-在計算機中開闢了一塊新的內存地址用於存放複製的對象。對象

 

淺拷貝實例:遞歸

//此遞歸方法不包含數組對象
var obj = {a:1, arr[2,3]};
var shallowObj = shallowCopy(obj);
function shallowCopy(src){
var newobj = {};
for(var prop in src)內存

{if(src.hasOwnProperty(prop))
{newobj[prop] = src[prop];}}
return newobj;
}io

深拷貝實例:console

var obj = {a:1,
arr[2,3],
nation:'中國',
birthplace:['北京','上海'],
};
var obj2 = {name:'楊'};
obj2 = deepCopy(obj,obj2);
console.log(obj2);
//深複製,須要達到深複製就須要用到遞歸
function deepCopy(o,c){
var c = c||{};
for(var i in o){
if(typeof o[i]==='object'){//要考慮深複製的問題了
if(o[i].constructor===Array){//這是數組
c[i] = [];
}else{//這是對象
c[i] = {};
}
deepCopy(o[i], c[i]);
}else{
c[i] = o[i];
}
}
return c;
}function

相關文章
相關標籤/搜索