在前端开发中,我们经常需要创建对象并设置对象的属性描述符。在 ES8 中,新增了 Object.getOwnPropertyDescriptors() 方法,可以从一个属性描述符模板对象中创建一个新的对象,同时还可以获取对象的属性描述符。
什么是属性描述符
在 JavaScript 中,每个属性都有一个描述符,描述属性的特性。属性描述符由以下四个特性组成:
value:属性的值。writable:属性是否可写。enumerable:属性是否可枚举。configurable:属性是否可配置。
Object.getOwnPropertyDescriptors() 方法
Object.getOwnPropertyDescriptors() 方法返回指定对象所有自身属性(非继承属性)的属性描述符。可以用来获取对象的属性描述符,或者从属性描述符模板对象中创建一个新的对象。
Object.getOwnPropertyDescriptors(obj)
参数
obj:需要获取属性描述符的对象。
返回值
返回值是一个对象,包含指定对象所有自身属性的属性描述符。
示例
-- -------------------- ---- -------
----- --- - -
----- -----
---- ---
--- ---------- -
------ ----------------------------
-
--
----- ----------- - --------------------------------------
-------------------------输出结果如下:
-- -------------------- ---- -------
-
----- -
------ -----
--------- -----
----------- -----
------------- ----
--
---- -
------ ---
--------- -----
----------- -----
------------- ----
--
--------- -
---- ---------- --- ----------
---- ----------
----------- -----
------------- ----
-
-从属性描述符模板创建对象
除了用 Object.getOwnPropertyDescriptors() 方法获取对象的属性描述符,还可以从一个属性描述符模板对象中创建一个新的对象。
Object.create(proto, descriptors)
参数
proto:新对象的原型对象。descriptors:新对象的属性描述符模板对象。
返回值
返回一个新的对象,该对象的原型对象为 proto,属性描述符由 descriptors 指定。
示例
-- -------------------- ---- -------
----- ----------- - -
---------- -
---------------------------------
-
--
----- ----------------- - -
----- -
------ -----
--------- -----
----------- -----
------------- ----
--
---- -
------ ---
--------- -----
----------- -----
------------- ----
-
--
----- ------ - -------------------------- -------------------
--------------------
------------------输出结果如下:
{
name: '张三',
age: 18
}
你好,我是张三总结
Object.getOwnPropertyDescriptors() 方法可以用来获取对象的属性描述符,或者从属性描述符模板对象中创建一个新的对象。这个方法在前端开发中非常有用,可以帮助我们更方便地创建对象并设置属性描述符。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/66092e8ed10417a2227a27d0