javascript 深度克隆對象

js通常有兩種不一樣數據類型的值:數組

基本類型(包括undefined,Null,boolean,String,Number),按值傳遞;對象

引用類型(包括數組,對象),按址傳遞,引用類型在值傳遞的時候是內存中的地址。例如:blog

  

  若是你修改b的值,那麼a變量的值也發生了變化。遞歸

  克隆或者拷貝分爲2種:淺度克隆(拷貝),深度克隆(拷貝);內存

  淺度克隆:基本類型爲值傳遞,對象仍爲引用傳遞。io

  深度克隆:全部元素或屬性均徹底克隆,並於原引用類型徹底獨立,即,在後面修改對象的屬性的時候,原對象不會被修改。function

 個人代碼以下: 主要用了遞歸。變量

     function cloneObject(obj){
          if(obj === null){
              return null;
          }else if(obj instanceof Array){
             var arr = [];
             for(var i = 0, ilen = obj.length; i < ilen; i+=1){
                 arr[i] = obj[i];
             }
             return arr;
        }else if(obj instanceof Date || obj instanceof RegExp || obj instanceof Function){
             return obj;
        }else if(obj instanceof Object){
            var o = {};
            for(var i in obj){
                if(obj.hasOwnProperty(i)){
                    o[i] = cloneObject(obj[i]);
                 }
            }
            return o;
       }else{
           return obj;
       }
  }數據類型

相關文章
相關標籤/搜索