Object.defineProperty()

2019-04-08  本文已影响0人  如果俞天阳会飞

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

object.defineProperty(obj, prop, descriptor)

configurable

当该属性的configurable为true时,改属性描述符才能被改变,(是否可以删除)默认为false

var obj = {};
  Object.defineProperty(obj,'newKey',{
    value: '22',
    configurable: false
  });
  delete obj.newKey;
  console.log(obj.newKey);  //22
configurable 为false 无法删除 newkey

writable

属性的值是否可以被重写。设置为true可以被重写;设置为false,不能被重写。默认为false。

var obj = {};
  Object.defineProperty(obj,'newKey',{
    value: '22',
    writable: true,
  });
  obj.newKey = 'hello';
  console.log(obj.newKey);  //hello
//当writable 为 true 时 打印hello false 为22

configurable 控制是否可以删除 writable 控制是否可以修改(赋值)

enumerable

此属性是否可以被枚举(使用for...in或Object.keys())。设置为true可以被枚举;设置为false,不能被枚举。默认为false

value

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

存取描述符同时具有以下可选键值:

get

一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。
默认为undefined

set

一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。
默认为undefined

上一篇下一篇

猜你喜欢

热点阅读