preventExtensions
默认情况下,所有对象都是可扩展的。在调用preventExtensions
之后,将不能再往对象中添加属性(严格模式报错,非严格模式静默失败),对已有属性没有影响
configurable: true,描述符可以更改。属性能改,属性可以删除
const log = console.log;
let obj1 = { name: 'xiaohua' };
Object.preventExtensions(obj1);
obj1.name = 'xiaomei'; //xiaomei 已有属性可读可写
obj1.age = 23; // undefined,添加属性静默失败
log(Object.isExtensible(obj1)); //false
log(Object.getOwnPropertyDescriptors(obj1)); // name: {value: 'xiaomei',writable: true,enumerable: true,configurable: true}
log(obj1); //{ name: 'xiaomei' }
delete obj1.name;
log(obj1); //{}
log(Object.getOwnPropertyDescriptors(obj1)); //{}
结果:
$ node for.js
false
{
name: {
value: 'xiaomei',
writable: true,
enumerable: true,
configurable: true
}
}
{ name: 'xiaomei' }
{}
{}
seal
密封属性;密封属性不可扩展&