JavaScript对象属性描述符都包括哪些?它们各自的作用是什么?

4 min read

JavaScript的对象属性描述符有以下几种:

  1. configurable:可配置性,决定该属性能否被删除或者修改。如果设置为false,那么不允许使用delete删除属性,不允许使用defineProperty修改已有的配置,但是仍然可以修改值或者修改writable属性。默认为true。

  2. enumerable:可枚举性,决定该属性能否和for-in循环遍历出来。如果设置为false,那么该属性就不能被遍历出来。默认为true。

  3. value:该属性的值。默认为undefined。

  4. writable:可写性,决定该属性能否被赋值。如果设置为false,那么该属性的值就不能被修改。默认为true。

  5. get:以函数形式定义的getter方法,该方法被调用时不需要括号,返回值即为该属性的值。

  6. set:以函数形式定义的setter方法,该方法被调用时需要传入一个参数,用于修改属性的值。

这些属性描述符可以通过Object.defineProperty或者Object.defineProperties方法添加给对象,也可以在对象字面量中直接定义。它们的作用在大多数情况下是控制属性如何被操作和访问,从而实现一些高级的 JavaScript 编程功能。