如何將多個對象合併爲一個對象

1、Object.assign()

 Object.assign() 方法用於將全部可枚舉屬性的值從一個或多個源對象複製到目標對象。它將返回目標對象。 而且源對象也會被修改。函數

  const target = { a: 1, b: 2 };
  const source = { b: 4, c: 5 };spa

  const returnedTarget = Object.assign(target, source);翻譯

  console.log(target);
  // expected output: Object { a: 1, b: 4, c: 5 }code

  console.log(returnedTarget);
  // expected output: Object { a: 1, b: 4, c: 5 }對象

若是目標對象中的屬性具備相同的鍵,則屬性將被源對象中的屬性覆蓋。後面的源對象的屬性將相似地覆蓋前面的源對象的屬性。支持多個對象合併,若是不想修改目標對象,能夠將目標對象改爲空 {},ip

例如:const returnedTarget = Object.assign( {} , source,source);原型鏈

Object.assign 方法只會拷貝源對象自身的而且可枚舉的屬性到目標對象。該方法使用源對象的[[Get]]和目標對象的[[Set]],因此它會調用相關 getter 和 setter。所以,它分配屬性,而不單單是複製或定義新的屬性。若是合併源包含getter,這可能使其不適合將新屬性合併到原型中。爲了將屬性定義(包括其可枚舉性)複製到原型,應使用Object.getOwnPropertyDescriptor()Object.defineProperty() 。作用域

String類型和 Symbol 類型的屬性都會被拷貝。get

在出現錯誤的狀況下,例如,若是屬性不可寫,會引起TypeError,若是在引起錯誤以前添加了任何屬性,則能夠更改target對象。原型

注意,Object.assign 不會在那些source對象值爲 null 或 undefined 的時候拋出錯誤。

 

2、採用循環遍歷

這種就稍微麻煩一點了

  var obj1={name:'張三'};  var obj2={age:18};  for(var key in obj2){    if(obj2.hasOwnProperty(key)===true){      obj1[key]=obj2[key];    }  }  console.log(obj1);

相關文章
相關標籤/搜索