js对象属性
属性的类型
js对象的分两种:**数据属性 **和 访问器属性
(一) 数据属性
顾名思义,数据属性就是用来直接保存数据的属性,一般情况下,我们都只会定义和操作数据属性
数据数据的四个特性
- configurable 定义属性是否可以为 delete 重新定义或修改为访问器属性,默认 true
- enumerable 定义属性是否可以被枚举,默认 true
- writable 定义属性是否可以被修改,默认 true
- value 属性的值
显性设置属性的参数
- writable 测试
const person = {
};
Object.defineProperty(person,'name',{
writable: false, // 不可以被修改
value: "小明"
});
console.log(person.name); // 小明
// 尝试修改 name 值失败
person.name = "大明"
// 还是 小明
console.log(person.name); // 小明
- configurable 测试,configurable 为 false 的定义是不能修改 该属性的 4 个值
const person = {
};
Object.defineProperty(person, 'name', {
configurable:false,// 不能重新定义属性
value: "小明"
});
try{
// delete person.name
Object.defineProperty(person, 'name', {
configurable:true, // 改为 true 会报错,依旧是 false 的话就不会报错
value: "小明"
});
} catch(err){
console.log(err);
}
// configurable 为 false 的定义是不能修改 该属性的 4 个值
// 修改属性的value值,不会成功,但不会报错
person.name = "大明"
console.log(person.name); // 小明
(二 )访问器属性
访问器属性,可以有点陌生,访问器就是来操作(获取 getter,设置 setter)数据属性的