1. 程式人生 > >JS的淺拷貝與深拷貝

JS的淺拷貝與深拷貝

code 有一個 實現 一個 turn fun pan xtend array

淺拷貝

//這樣的拷貝有一個問題。那就是,如果父對象的屬性等於數組或另一個對象,
//那麽實際上,子對象獲得的只是一個內存地址,而不是真正拷貝,因此存在父對象被篡改的可能。

 function extendCopy(o) {
    var copy = {};
    for (var i in o) { 
      cppy[i] = o[i];
    }
    return copy;
  }

深拷貝

//就是能夠實現真正意義上的數組和對象的拷貝。它的實現並不難,只要遞歸調用"淺拷貝"就行了。

function deepCopy(o, copy) {
    var copy = copy || {};
    
for (var i in o {       if (typeof o[i] === object) {         copy[i] = (o[i].constructor === Array) ? [] : {};         deepCopy(o[i], copy[i]);       } else {          copy[i] = o[i];       }     }     return copy;   }

JS的淺拷貝與深拷貝