javascript 中的深復制 和 其實現方法


首先,我們需要明白什么是深復制(側重指對象方面)?

在javascript中,復制分為淺復制和深復制,個人理解,淺復制就是直接將引用復制,復制前后的兩個對象指向同一個內存地址,對其中一個進行操作,另外一個也會發生同樣的改變,他們只是不同的指針指向了同一塊內存。

而深復制是開辟了一個新的內存地址,把其內容完完全全的復制到這個新的內存地址中,之后對這個對象的任何操作都不會影響到其復制的對象(既兩邊的操作都不會影響彼此),他們成了兩個完全獨立的對象。
那么如何實現所謂的深復制呢?
 
可以通過遍歷+遞歸實現深復制。
function deepClone ( obj ) {
    if( typeof obj != "object" ){
        return obj ;
    }  

    var newObj = obj.constructor === Array ? [] : {};  //開辟一塊新的內存空間

    for( var i  in  obj ) {
        newObj [ i ] = deepClone ( obj [ i ] );                 //通過遞歸實現深層的復制 
    }

  return newObj; }

另外,可以通過使用一些框架或庫里的方法來實現深復制

比如 jquery 里的 extend 方法:extend(deep, object)  // 第一個參數為可選參數  ,默認為 false  如果傳入了 true 則實現的就是深復制

 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM