文章目录
1. 数据属性
[[Configurable]]
表示属性是否可以通过delete删除并重新定义,是否可以修改它的特性,是否可以把它改为访问器属性
[[Enumberable]]
表示属性是否可以通过for-in循环返回
[[Writable]]
表示能否修改属性的值
[[Value]]
包含属性实际的值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置
默认值为undefined
1.1 在对象上定义
let person = {
name: "YK菌"
直接在对象上定义的属性,它们的[[Configurable]]、[[Enumerable]]和[[Writable]]特性都被设置为true,而[[Value]]特性被设置为指定的值
1.2 使用Object.defineProperty()方法设置属性默认特性
let person = {
};
Object.defineProperty(person, "name", {
writable: false,
value: "Nicholas"
});
console.log(person.name); // "Nicholas"
person.name = "Greg";
console.log(person.name); // "Nicholas"
let person = {
};
Object.defineProperty(person, "name", {
configurable: false,
value: "Nicholas"
});
// 抛出错误
Object.defineProperty(person, "name", {
configurable: true,
value: "Nicholas"
});
在调用Object.defineProperty()时,configurable、enumerable 和writable 的值