美文网首页
javascript Object.defineProperty

javascript Object.defineProperty

作者: 顺其自然AAAAA | 来源:发表于2020-09-07 11:39 被阅读0次

用法: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,则keyi修改

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"]

目前大概就是这些
建议:眼看千遍,不如手敲一遍

相关文章

网友评论

      本文标题:javascript Object.defineProperty

      本文链接:https://www.haomeiwen.com/subject/cnmkektx.html