JavaScript中的对象是一种复合数据类型,它由属性构成。在JavaScript中,对象具有以下三个属性特征:
- 可枚举性(Enumerable)
可枚举性决定了对象的属性能否被 for...in 语句枚举。可枚举性的值可以是 true 或 false,默认值为 true。
示例1:
const obj = {a: 1, b: 2};
Object.defineProperty(obj, 'b', {enumerable: false});
for(let prop in obj) {
console.log(prop); //a
}
上述代码中,b属性被设置为不可枚举,for...in语句只会枚举可枚举的属性a。
- 可配置性(Configurable)
可配置性决定了对象的属性能否被删除和属性特性能否被修改。可配置性的值可以是 true 或 false,默认值为 true。
示例2:
const obj = {a: 1};
Object.defineProperty(obj, 'a', {configurable: false});
delete obj.a; //无法删除
Object.defineProperty(obj, 'a', {enumerable: false}); //失败,因为configurable为false
上述代码中,a属性被设置为不可配置,所以无法删除,也无法重新定义属性特性。
- 可写性(Writable)
可写性决定了对象的属性能否被赋值。可写性的值可以是 true 或 false,默认值为 true。
示例3:
const obj = {a: 1};
Object.defineProperty(obj, 'a', {writable: false});
obj.a = 2; //赋值失败,因为writable为false
上述代码中,a属性被设置为不可写,所以赋值操作失败。
除了上述三个属性特征以外,还有一个对象属性特征是值属性特征(Value Property),决定了对象的属性的默认值。值属性特征没有可配置性、可枚举性和可写性这些属性特征。
综上所述,JavaScript对象的属性特征是一种非常重要的操作对象属性的方式,开发者可以通过控制属性特征实现对象属性的灵活管理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript对象3个属性特征 - Python技术站