js中的对象属性描述符

数据对象属性描述符是通过Object.defineProperty方法规定对象中的某一个值的使用规则

使用方法为:

Object.defineProperty(obj,'name', {
    configurable:false,// 告诉js引擎,obj对象中的name不可以删除
    enumerable:false,//告诉js引擎,obj对象的name属性不可枚举(for in /Object.keys)
    writable:false, //告诉js引擎, obj对象的name属性不写入(只读属性 readonly)
    value: 'coderwhy' // 告诉js引擎, 返回这个value
})

存储属性描述符比数据属性描述符多了两个关键字get和set
这两个关键字能够监听对象中值的改变从而执行函数中的内容
Vue2中的响应式使用的就是该原理

多个属性描述符:

Object.defineProperties(obj,{
        name:{
            configurable:true,
            enumerable:true,
            writable:false
        },
        age:{
        }
    })

额外补充:

1、获取属性描述符

console.log(Object.getOwnPropertyDescriptor(obj,‘name’));
    console.log(Object.getOwnPropertyDescriptors(obj));
2、阻止对象的扩展
    Object.preventExtensions(obj)
    obj.address = ‘广州市’
    console.log(obj);
3、密封对象(不能进行配置)
    Object.seal(obj)
    delete obj.name
    console.log(obj);
4、冻结对象(不能进行写入)
    Object.freeze(obj)
    obj.name = ‘kobe’
    console.log(obj);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值