Object.defineProperty()使用方法

用法:

        给指定对象修改或添加属性

语法:

        Object.defineProperty(obj, prop, descriptor)

参数:

        obj:指定需要修改的对象

        prop:属性名

        descriptor:属性描述,对象表示

代码示例:

 let obj1 = {
        name:'zs',
        age:15
      }
    let newObj =  Object.defineProperty(obj1,'age',
{
value:6,
enumerable:true,
writable:false
})
      console.log(newObj);
descriptor属性描述对象
{
  value:'value',//属性值
  enumerable:true,//可遍历
  writable:true,//可修改
  configurable:true,//可删除
  get:(){},//访问该属性时触发
  set:(){},//修改改属性时触发
}
 注意! 

        value,writable 和 get,set属性不能一块使用

        get属性表示对应属性被读取时候触发的方法,需要设置返回值表示该属性的值,如果不设置为undefined

        set属性表示对应属性被修改时触发的方法,需要设置返回值,如果不设置为undefined

 let obj1 = {
        name:'zs',
        age:15
      }
    let newObj =  Object.defineProperty(obj1,'age',{value:6,enumerable:true,writable:false})
      Object.defineProperty(obj1,'run',{
        get:function(){
          console.log('读取了值');
          return '跑步'
        },
        set:(value)=>{
          console.log('修改了值',value);
          return value
        }
      })
      console.log(obj1);

可以看到run的值并没有直接展示

读取该属性时,就会触发get方法,同时返回属性的值

当修改属性值的时候,会触发set方法

关于Object.defineProperty()的返回值
 let obj1 = {
        name:'zs',
        age:15
      }
    let newObj =  Object.defineProperty(obj1,'age',{value:6,enumerable:true,writable:false})
  
      console.log(obj1===newObj);
      console.log(newObj);

可以看出,该方法的返回值是被修改后的对象

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值