ES6 中的 Object 对象新增了不少方法,这些新方法能够使开发者更加便捷地操作对象。本文将介绍其中比较重要的几个方法,帮助开发者更好地理解和应用 ES6 中的 Object 对象。
Object.assign()
Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象,它的语法如下:
Object.assign(target, ...sources)
其中,target 是目标对象,sources 是源对象,可以有多个。
示例代码:
const target = { a: 1, b: 2 }; const source1 = { b: 3, c: 4 }; const source2 = { c: 5, d: 6 }; const result = Object.assign(target, source1, source2); console.log(target); // { a: 1, b: 3, c: 5, d: 6 } console.log(result); // { a: 1, b: 3, c: 5, d: 6 }
在这个示例中,我们创建了三个对象,分别是 target、source1 和 source2。然后我们调用了 Object.assign() 方法将 source1 和 source2 的属性拷贝到 target 中,之后我们打印了 target 和 result,它们的结果完全相同。原因是 Object.assign() 方法会将源对象的属性和值添加到目标对象,并且会返回目标对象。
Object.entries()
Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,它的语法如下:
Object.entries(obj)
其中,obj 是要返回键值对数组的对象。
示例代码:
const obj = { a: 1, b: 2, c: 3 }; const arr = Object.entries(obj); console.log(arr); // [ ["a", 1], ["b", 2], ["c", 3] ]
在这个示例中,我们创建了一个对象 obj,其中包含三个属性。我们调用 Object.entries() 方法将 obj 转换成了数组 arr,打印 arr 的结果为 [ ["a", 1], ["b", 2], ["c", 3] ]。可以看到,这个数组的元素也是数组形式的,它们的第一个元素是属性名,第二个元素是属性值。
Object.values()
Object.values() 方法返回一个给定对象自身可枚举属性值的数组,它的语法如下:
Object.values(obj)
其中,obj 是要返回值数组的对象。
示例代码:
const obj = { a: 1, b: 2, c: 3 }; const arr = Object.values(obj); console.log(arr); // [ 1, 2, 3 ]
在这个示例中,我们创建了一个对象 obj,其中包含三个属性。我们调用 Object.values() 方法将 obj 转换成了数组 arr,打印 arr 的结果为 [ 1, 2, 3 ]。
Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors() 方法返回一个对象所有自身属性(非继承属性)的描述对象,它的语法如下:
Object.getOwnPropertyDescriptors(obj)
其中,obj 是要返回描述对象的对象。
示例代码:
// javascriptcn.com 代码示例 const obj = { prop1: 1, prop2: 'Hello, World!', prop3: () => console.log('Hello, World!') }; const descriptors = Object.getOwnPropertyDescriptors(obj); console.log(descriptors); /* { prop1: { value: 1, writable: true, enumerable: true, configurable: true }, prop2: { value: "Hello, World!", writable: true, enumerable: true, configurable: true }, prop3: { value: () => console.log('Hello, World!'), writable: true, enumerable: true, configurable: true } } */
在这个示例中,我们创建了一个对象 obj,其中包含三个属性,分别是 prop1、prop2 和 prop3。我们调用 Object.getOwnPropertyDescriptors() 方法,打印输出的结果会是一个描述对象,它包含了所有自身属性的描述符,其中包括属性值、可写性、可枚举性和可配置性。
Object.setPrototypeOf()
Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即,内部[[Prototype]]属性指向的对象 ) 到另一个对象或者 null,它的语法如下:
Object.setPrototypeOf(obj, prototype)
其中,obj 是要设置原型的对象,prototype 是新对象的原型 ( 一个对象或 null )。
示例代码:
const obj = { a: 1 }; const prototype = { b: 2 }; Object.setPrototypeOf(obj, prototype); console.log(obj.b); // 2
在这个示例中,我们创建了一个对象 obj,它包含了一个属性 a。我们调用 Object.setPrototypeOf() 方法将 obj 的原型设置成了另一个对象 prototype,prototype 包含了一个属性 b。之后我们打印了 obj.b,结果为 2。这是因为我们已经将 obj 的原型设置成了 prototype,因此它继承了 prototype 的属性 b。
总结
以上是 ES6 中 Object 对象新增的几个方法,它们可以帮助我们更加便捷地操作对象,提高开发效率。开发者可根据实际需求,灵活使用这些方法,并不断深入学习和掌握 ES6 的相关知识。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6539ee6f7d4982a6eb398348