如何将多个对象合并为一个对象

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);

相关文章
相关标签/搜索