Object.defineProperty()详解
Object.defineProperty()
是 JavaScript 中用于直接在对象上定义新属性或修改现有属性的核心方法,它提供了对属性行为的精细控制(如可枚举性、可写性等)。以下是详细说明:
一、基本语法
Object.defineProperty(obj, prop, descriptor)
obj
: 目标对象prop
: 要定义或修改的属性名(String 或 Symbol)descriptor
: 属性描述符对象(核心配置)
二、属性描述符(descriptor)
描述符分为两类:数据描述符 和 存取描述符,二者不能混用。
1. 数据描述符(直接操作值)
value
: 属性值(默认undefined
)writable
: 是否可修改(默认false
)enumerable
: 是否可枚举(如出现在for...in
循环中,默认false
)configurable
: 是否可修改描述符或删除属性(默认false
)
2. 存取描述符(通过 getter/setter 控制)
get()
: 获取属性值时调用的函数(默认undefined
)set(newValue)
: 设置属性值时调用的函数(默认undefined
)enumerable
和configurable
(同上)
⚠️ 注意:若同时使用
value/writable
和get/set
会抛出错误。
三、使用示例
1. 基础属性定义
const obj = {};
Object.defineProperty