Object.defineProperty方法回顾

  1. Object.defineProperty方法

    用于给对象添加属性的方法,有三个参数:给那个对象添加属性,属性名,配置对象,那Object.defineProperty与传统的直接定义属性的区别:
    let person = {
        name: '张三',
        id: '18'
    }
    Object.defineProperty(person, 'age', {
        value: 18
    })
    
    Object.defineProperty定义的属性,浏览器显示如下:
    在这里插入图片描述
    明显person的age属性颜色更淡一点,表示该属性时不可以被枚举(不参与遍历)的
    应用:需求:根据某个变量的值来给某对象增添一个属性,且该属性的值自动随该变量number的值改变而改变,同时属性的值改变number的值也要改变
// 需求:根据某个变量的值来给某对象增添一个属性,且该属性的值自动随该变量number的值改变而改变,同时属性的值改变number的值也要改变
   let number = 19;
   let person = {
       name: '张三',
       id: '18'
   }
   Object.defineProperty(person, 'age', {
       // value: 18,//属性的值
       // enumerable: true,//控制属性是否可以枚举,默认值是false
       // writable: true,//控制属性是可以被修改,默认值是false
       // configurable: true,//控制属性是否可以被删除,默认值是false

       // 当有人读取person的age属性时,get(getter)函数就会被调用,且返回值就是age的值
       get() {
           return number
       },

       // 当有人修改person的age属性时,set(setter)函数就会被调用,且会受到具体被调用的值
       set(value) {
           console.log('有人修改了person的age属性,修改值为:', value);
           number = value;
       }
   })
   console.log(person)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值