Object.defineProperty()

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

语法

   Object.defineProperty(obj, prop, descriptor);
 
参数
  1. obj
    要在其上定义属性的对象。
  2. prop
    要定义或修改的属性的名称。
  3. descriptor
    将被定义或修改的属性描述符。

在ES6中,由于 Symbol类型的特殊性,用Symbol类型的值来做对象的key与常规的定义或修改不同,而Object.defineProperty 是定义key为Symbol的属性的方法之一。


属性描述符
  • configurable

    值: true/false;
    只有值为true时,该属性的描述符才能改变,同事该属性也能从对应的对象上删除。默认值为false

  • enumerable

    值: true/false
    只有值为true时,该属性为可枚举属性。默认值为false

  • value

    值: 任何有效的javascript数据类型
    value为当前设置属性对应的值,默认为undefined

  • writable

    值: true/false
    只有值为true时,value才能被赋值运算符改变。默认值为false


存取描述符同时具有以下可选键值
  • get
    一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。
    默认为 undefined。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值