javascript对象属性特征

每个属性都有四大特征,分别是:value(值),writeable(可写性),enumerable(可枚举性),configurable(可配置性)。

修改属性特性

Object.defineProperty(对象,属性,{特征名:特征值})

var person = {};
Object.defineProperty(person, 'name', {
    writable: false,
    value: 'A'
})
alert(person.name)   //A
person.name = 'B'
alert(person.name)   //B

通过Object.defineProperty()创建的属性,configurable默认值为false。且,configurable为false后,永远是false。
通过对象创建的属性,configurable enumerable writable默认都为true

通过Object.defineProperties修改多个属性特性,语法:

Object.defineProperties(对象,{
    属性名: {
        特征名: 特征值,
        特征名: 特征值
    },
    属性名: {
        特征名: 特征值,
        特征名: 特征值
    }
})

获取对象属性的特征getOwnPropertyDescriptor:

var info = Object.getOwnPropertyDescriptor(person,"name");
console.log(info);
//{"value":"hester","writable":true,"enumerable":true,"configurable":true}

writable特征

console.log(person.name); // hester
Object.defineProperty(person,"name",{writable:false});
person.name = "jack";
console.log(person.name); // hester

属性设置writable为false后,不可修改该属性的值

enumerable特征

for(var p in person){
  console.log(p);
} // name,age 
Object.defineProperty(person,"name",{enumerable:false});
for(var p in person){
  console.log(p);
} // age
console.log(person.name); // hester

属性设置enumerable为false后,不可被枚举出来,比如for…in循环等。但是可以访问

configurable特征

Object.defineProperty(person,"name",{configurable:false});

属性设置configurable为false后:
1.不可设置configurable为true;
2.不可设置enumerable(true为false 和 false为true均不可以);
3.不可设置writable由false为true,可设置writable由true为false

检查属性的enumerable特征状态

person.propertyIsEnumerable("name"); // false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值