Object.assign()


https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

說明

Object.assign()方法將所有可枚舉屬性的值從一個或多個源對象復制到目標對象,然后返回目標對象

語法

   Object.assign(target,..sources);

參數

   target:目標對象

  sources:源對象

返回值

  target:目標對象

例子:

1.使用Object.assgin()進行淺克隆

  //創建源對象
    var source = {a:1};
    //創建目標對象
    var target = {};
    //使用Object.assign進行復制
    var copyObj = Object.assign(target,source);
    
    console.log("copyObj:"+JSON.stringify(copyObj));      //{a:1}
    console.log("target===copyObj:"+(copyObj==target));   //true

 

     從上面兩個輸出可以得到Object.assign方法的說明結論 。

       1.assign進行了對象復制

       2.返回對象既是目標對象

2.使用Object.assgin()+JSON進行深克隆

     單純使用Object.assgin()方法復制對象我們只能復制對象中的值屬性,而對於對象中引用屬性,我們只能復制其引用

    //創建源對象
    var source = {a:1,b:{c:2}};
    //創建目標對象
    var target = {};
    //使用Object.assign進行復制
    var copyObj = Object.assign(target,source);
    console.log("copyObj:"+JSON.stringify(copyObj));                //{"a":1,"b":{"c":2}}
    console.log("target.b===copyObj.b:"+(source.b==copyObj.b));     //true

 

       那么js該怎么實現深度克隆呢,我們可以使用JSON來實現  

 //創建源對象
    var source = {a:1,b:{c:2}};
    //創建目標對象
    var target = {};
    //使用Object.assign進行淺復制
    var copyObj = Object.assign(target,source);
    //將copyObj序列成JSON字符串
    var copyString = JSON.stringify(copyObj);
    //然后再將其JSON字符串轉換為對象,這樣深度克隆
    copyObj = eval('('+copyString+')');
    console.log("copyObj:"+JSON.stringify(copyObj));              //{"a":1,"b":{"c":2}}
    console.log("source.b===copyObj.b:"+(source.b==copyObj.b));   //false

 

      上面我們可以看出實現方式是將其轉化為JSON字符串,然后再轉成對象,就可完成深度克隆

 


免責聲明!

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



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