ES6 的Object.assign(target, source_1, ···)方法與對象的擴展運算符

1、基本概念數組

Object.assign方法用來將源對象(source)的全部可枚舉屬性,複製到目標對象(target)。它至少須要兩個對象做爲參數,第一個參數是目標對象,後面的參數都是源對象。
Object.assign(target, source_1, ..., source_n)

 

2、基本用法函數

let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
Object.assign(target,object2,object3);  
// 第一個參數是目標對象,後面的參數是源對象
target;  // {a: 1, b: 2, c: 3}

須要注意的是,spa

  • 若是目標對象和源對象有同名屬性,或者多個源對象有同名屬性,則後面的屬性會覆蓋前面的屬性。
  • 若是該函數只有一個參數,當參數爲對象時,直接返回該對象;當參數不是對象時,會先將參數轉爲對象而後返回。在這裏還有一點,null 和 undefined 不能轉化爲對象,因此會拋出TypeError錯
  • assign 的屬性拷貝是淺拷貝
Object.assign(null);       // TypeError: Cannot convert undefined or null to object
Object.assign(undefined);  // TypeError: Cannot convert undefined or null to object
當參數不止一個時,null 和 undefined 不放第一個,即不爲目標對象時,會跳過 null 和 undefined ,不報錯
Object.assign(1,undefined);  // Number {1}
Object.assign({a: 1},null);  // {a: 1}
Object.assign(undefined,{a: 1});  // TypeError: Cannot convert undefined or null to object

 3、擴展運算符code

對象的擴展運算符(...)用於取出參數對象的全部可遍歷屬性,拷貝到當前對象之中。因爲數組是特殊的對象,因此對象的擴展運算符也能夠用於數組。對象

對象的擴展運算符等同於使用Object.assign()方法。blog

let aClone = { ...a };
// 等同於
let aClone = Object.assign({}, a);
var phoneInfo=
    {
       areaCode: '',
       phone: ''
    }
var z =
    {
        ...phoneInfo,
        areaCode: "86"
    }
//等同於
var z = Object.assign({}, phoneInfo, { areaCode: 86 }) 
相關文章
相關標籤/搜索