当属性的configurable属性设置为true时,该属性的属性描述符可以被修改,属性可以被删除,以及该属性的特性可以被修改。当configurable设置为false时,这些操作将受限制。
例子:
var person = {
name: "John",
age: 30
};
// 尝试修改属性描述符
Object.defineProperty(person, "name", {
enumerable: false,
configurable: false // 设置为不可配置
});
// 尝试删除属性
delete person.name;
// 尝试修改属性特性
Object.defineProperty(person, "age", {
writable: false
});
console.log(person); // 输出: { age: 30 }
在上面的示例中,我们首先定义了一个person对象,然后尝试修改name属性的属性描述符,将configurable设置为false,表示该属性的属性描述符不可再修改。接下来,我们尝试删除name属性,但由于configurable被设置为false,所以删除操作将被阻止。最后,我们尝试修改age属性的writable特性,但由于configurable被设置为false,修改操作也会被阻止。
这个例子说明了当configurable属性被设置为false时,属性描述符的修改、属性的删除和属性特性的修改都会受到限制,从而保护了属性的稳定性和安全性。