js深層拷貝
阿新 • • 發佈:2018-12-28
拷貝分為淺層拷貝和深層拷貝,在js中拷貝主要針對於物件型別的,因為物件直接賦值是地址,這樣複製過來的物件裡面改變,這時候原來的物件也會跟著變化,這因此不是我們想要的,因此我們要深層拷貝,深層拷貝時拷貝過來的物件再怎麼變化,原來那個不會變化,要考慮到物件裡面可以巢狀物件,要做到這個完全深拷貝,方法有多種,以下兩種供大家看。
方法一,
function deepcopy(obj){ if(Array.isArray(obj)){ var newObj = []; }else{ var newObj = {} } for (var i in obj) { if(typeof obj[i] == 'object'){ newObj[i] = deepcopy(obj[i]); }else{ newObj[i] = obj[i]; } } return newObj; } var ss = {a:[1]}; var ss1 = deepcopy(ss); ss["a"].push(2); console.log(ss,ss1);
方法二,運用json的方法
function deepClone(obj) { let _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone }