Object.defineProperty()的用法

用法:Object.defineProperty()定义新属性或修改原有的属性
语法:Object.defineProperty(obj,prop,descriptor)
Object.defineProperty() 第三个参数 descriptor 说明:以对象形式{ } 书写
参数说明:

  1. value: 设置属性的值, 默认值为undefined
  2. writable: 值是否可以重写。 true|false 默认为false
  3. enumerable: 目标属性是否可以被枚举。true|false 默认为flase
  4. configurable: 目标属性是否可以被删除或是可以再次修改特性 true|false 默认为false

举例子:

     var obj = {
         id: 1,
         name: '红米手机',
         price: '1999'
     }

1.修改对象里面的属性

Object.defineProperty(obj,'price',{
         value: 999
     })
     console.log(obj)  // 得到: {id: 1, name: "红米手机", price: 999}

2.往对象里面添加属性

Object.defineProperty(obj,'num',{
         value: 10
     })
     console.log(obj)  // 得到: {id: 1, name: "红米手机", price: 999, num: 10}

3.如果 writable:false,则不允许修改

Object.defineProperty(obj,"id",{
         writable:false
     })
     obj.id = 2;
     console.log(obj)  // 得到:writable:false   {id: 1, name: "红米手机", price: 999}

4.如果 writable:true,则可以修改

Object.defineProperty(obj,"id",{
         writable:true
     })
     obj.id = 2;
     console.log(obj)  // 得到: writable:true {id: 2, name: "红米手机", price: 999}

5.如果enumerable 值为false 则不允许遍历,默认值为false

Object.defineProperty(obj,"id",{
         writable:true,
         enumerable:false
     })
     console.log(Object.keys(obj));  // 得到: ["name", "price"]

6.如果enumerable 值为true 则允许遍历,默认值为false

Object.defineProperty(obj,"id",{
         writable:true,
         enumerable:true
     })
     console.log(Object.keys(obj));  //["id", "name", "price"]

7.如果configurable 值为false, 则不允许删除或者修改特性

Object.defineProperty(obj,"price",{
         writable:true,
         enumerable:true,
         configurable: false
     })
     delete obj.price;
     console.log(Object.keys(obj)); // ["id", "name", "price"]

8.如果configurable 值true, 则允许删除或者修改特性

 Object.defineProperty(obj,"price",{
         writable:true,
         enumerable:true,
         configurable: true
     })
     delete obj.price;
     console.log(Object.keys(obj)); // ["id", "name"]
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值