Object getOwnPropertyDescriptors()方法
了解JavaScript Object对象的getOwnPropertyDescriptors()方法
此方法返回对象的所有自有(非继承)属性描述符。
Object.getOwnPropertyDescriptors(obj)
接受一个对象,并返回一个提供属性描述符列表的新对象。
示例:
1 | const dog = {} |
有一个使用场景可以非常有用。ES2015给我们提供了Object.assign()
,它可以复制一个或多个对象的所有可枚举自有属性,并返回一个新对象。但是它存在一个问题,就是它无法正确复制具有非默认属性的属性。
例如,如果一个对象只有一个setter,使用Object.assign()
无法正确复制到新对象中。例如:
1 | const person1 = { |
这个复制尝试将不起作用:
1 | const person2 = {} |
但这个可以正常工作,并正确复制setter:
1 | const person3 = {} |
可以通过控制台测试看到:
1 | person1.name = 'x' |
person2
不包含setter,它没有被复制过来。
对于使用Object.create()
进行浅克隆的对象,也存在同样的限制。
tags: [“JavaScript”, “Object”, “getOwnPropertyDescriptors”, “property descriptors”, “Object.assign”]