一、基本概念
Object.assign方法用來將源物件(source)的所有可列舉屬性,複製到目標物件(target)。它至少需要兩個物件作為引數,第一個引數是目標物件,後面的引數都是源物件。
Object.assign(target, source_1, ..., source_n)
二、基本用法
let target = {a: 1}; let object2 = {b: 2}; let object3 = {c: 3}; Object.assign(target,object2,object3); // 第一個引數是目標物件,後面的引數是源物件 target; // {a: 1, b: 2, c: 3}
需要注意的是,
- 如果目標物件和源物件有同名屬性,或者多個源物件有同名屬性,則後面的屬性會覆蓋前面的屬性。
- 如果該函式只有一個引數,當引數為物件時,直接返回該物件;當引數不是物件時,會先將引數轉為物件然後返回。在這裡還有一點,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