Object.assign()
方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
const object1 = { a: 1, b: 2, c: 3 }; const object2 = Object.assign(object1,{c: 4, d: 5} ); //如何key值相同,后面的会覆盖前面的 console.log(object2); > Object { a: 1, b: 2, c: 4, d: 5 }
Object.create()
方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。
o = new Constructor(); // 上面的一句就相当于: o = Object.create(Constructor.prototype);
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in
循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)
const object1 = { foo: 'bar', baz: 42 }; console.log(Object.entries(object1)[1]); // expected output: Array ["baz", 42] const object2 = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.entries(object2)[2]); // expected output: Array ["2", "c"] const object3 = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.entries(object3)[0]); // expected output: Array ["2", "b"] 会根据key值大小进行排序处理
Object.fromEntries() 将数组转为对象。与上面的方法相反
const object1 = { a: 1, b: 2, c: 3 }; const object2 = Object.fromEntries( Object.entries(object1) .map(([ key, val ]) => [ key, val * 2 ]) ); console.log(object2); // { a: 2, b: 4, c: 6 }