9.1、Object.defineProperty()
2024-02-27 18:44:36 0 举报
AI智能生成
Object.defineProperty()
作者其他创作
大纲/内容
作用
可以监测数据的改变
语法
Object.defineProperty(obj, prop, descriptor)
=> obj :要定义属性的对象。
=> prop :要定义或修改的属性的名称
=> descriptor :要定义或修改的属性描述符(是一个对象)
属性描述符
数据描述符
定义
数据描述符是一个具有值的属性,该值可以是可写的,也可以是不可写的
存取描述符
定义
存取描述符是由 getter 函数和 setter 函数所描述的属性
注意
一个描述符只能是这两者其中之一;不能同时是两者。
这两种描述符都是对象。
属性描述符-共享键值对
默认值是指在使用 Object.defineProperty() 定义属性时的默认值
enumerable
默认值
false
定义
当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。
enumerable 定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。
configurable
默认值
false
定义
当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变
同时该属性也能从对应的对象上被删除。
数据描述符可选键值
value
默认值
undefined
定义
该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。
writable
默认值
false
当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符改变。
存取描述符可选键值
get
默认值
undefined
属性的 getter 函数,如果没有 getter,则为 undefined。
特点
当访问该属性时,会调用此函数。
执行时不传入任何参数,但是会传入 this 对象(由于继承关系,这里的this并不一定是定义该属性的对象)
该函数的返回值会被用作属性的值。
set
默认值
undefined
属性的 setter 函数,如果没有 setter,则为 undefined。
特点
当属性值被修改时,会调用此函数。
该方法接受一个参数(也就是被赋予的新值),会传入赋值时的 this 对象。
0 条评论
下一页