Object.defineProperty()详解

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

注意:应当直接在 Object 构造器对象上调用此方法,而不是在任意一个 Object 类型的实例上调用。

1.语法

Object.defineProperty(obj, prop, descriptor)

2.参数

@obj  要定义属性的对象

@prop  要定义或修改的属性的名称

@descriptor  要定义或修改的属性描述符

3.描述符(descriptor)的具体参数

数据描述符

@configurable - 默认为 false

  当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除

@enumerable - 默认为 false

  当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中

@value - 默认为 undefined

  该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)

@writable - 默认为 false

  当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符改变

存取描述符

@get - 默认为 undefined

  属性的 getter 函数,如果没有 getter,则为 undefined。当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入 this 对象(由于继承关系,这里的this并不一定是定义该属性的对象)。该函数的返回值会被用作属性的值

@set - 默认为 undefined

  属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。该方法接受一个参数(也就是被赋予的新值),会传入赋值时的 this 对象

注意:当使用了getter或setter方法,不允许使用writable和value这两个属性(如果使用,会直接报错)

 

posted @ 2021-03-16 16:00  neo_o  阅读(393)  评论(0编辑  收藏  举报

愿你的生活只有诗和远方