操作對象的幾種方法


一:判斷對象是否為空

  4.  使用ES6的Object.keys()方法        //推薦方法還是放第一個吧

    var data = {};

    var arr = Object.keys(data);

    console.log(arr.length == 0); //true;

  

  1. 轉換成字符串進行比對

    var data = {};

      var flag = (JSON.stringify(data) == "{}");

 

  2.  for in 循環判斷

    var data = {};

    var a = function (){

      for(var key in data) {
        return false;
      }
      return true;

    }

    a(); //true

  3.  jquery的isEmptyObject方法

    var data = {};

    var a = $.isEmptyObject(data);

    console.log(a); //true

 

二: 刪除對象中某個屬性

  delete:

    var a = {a : 1, b: 2};

    delete a.b;

    console.log(a);  //{a: 1}

 

三:添加對象屬性

  var a = {a: 1};

  a.b = 2;

  console.log(a); // {a: 1,b: 2}

 

四:對象的深拷貝與淺拷貝

  最簡單明了的區別

    淺拷貝是指, 修改B對象的屬性和方法會影響到A對象的屬性和方法, 我們稱之為淺拷貝

    深拷貝是指, 修改B對象的屬性和方法不會影響到A對象的屬性和方法, 我們稱之為深拷貝

  淺拷貝:

    1.  var a = {a: 1, b: 2};

    var b = a;

    b.c = 3;

    b.b = 4;

    console.log(a); // {a: 1, b: 4, c: 3}

  深拷貝:

    1. for in循環遍歷 

      function deepClone(obj){
          let objClone = Array.isArray(obj)?[]:{};
          if(obj && typeof obj==="object"){
              for(key in obj){
                  if(obj.hasOwnProperty(key)){
                      //判斷ojb子元素是否為對象,如果是,遞歸復制
                      if(obj[key]&&typeof obj[key] ==="object"){
                          objClone[key] = deepClone(obj[key]);
                      }else{
                          //如果不是,簡單復制
                          objClone[key] = obj[key];
                      }
                  }
              }
          }
          return objClone;
      }    
      let a={a: 1, b: 2},b=deepClone(a);
      a.b=4;
      console.log(a); {a: 1,b: 4}
      console.log(b); {a: 1,b: 2}
    

    2. JSON.stringify 和 JSON.parse         

      function deepClone(obj){
          let _obj = JSON.stringify(obj)
          let objClone = JSON.parse(_obj);
          return objClone
      }   
      var a = {a: 1, b: 2};
      var b = deepClone(a);
      b.b = 4;
      console.log(b); //{a: 1, b: 4}
      console.log(a); //{a: 1, b: 2}

      

    3. Jquery的extend方法

     
       

      $.extend( [deep ], target, object1 [, objectN ] )

      deep表示是否深拷貝,為true為深拷貝,為false,則為淺拷貝

      target Object類型 目標對象,其他對象的成員屬性將被附加到該對象上。

      object1  objectN可選。 Object類型 第一個以及第N個被合並的對象。 

let a=[0,1,[2,3],4],b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

    

 

    

 


免責聲明!

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



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