、 ?
1. ?JavaScript , 。
2. : [[Configurable]]、[[Writable]]、[[Enumerable]]、[[Value]]、[[Get]] [[Set]] , 。
、
1. , 。 ,
var o = {
name : "zhang"
}
o.age = 23;
alert(o.age); // 23
2. Object.preventExtensions() , 。
var o = {
name : "zhang"
}
alert(Object.isExtensible(o)); // true
Object.preventExtensions(o);
o.age = 23;
alert(o.age); // undefined
alert(Object.isExtensible(o)); // false
、
, [[Configurable]] false。 , Object.defineProperty() , 。 。
var o = {
name : "zhang"
}
// alert(Object.isExtensible(o)); // true
// alert(Object.isSealed(o)); // false
//
Object.seal(o);
o.age = 23;
// alert(o.age); // undefined
//
delete o.name;
// alert(o.name); // zhang
//
o.name = "li";
alert(o.name);
alert(Object.isExtensible(o)); // false
alert(Object.isSealed(o)); // true
、
, , [[Writable]] false。 [[Set]] , 。
var o = {
name : "zhang"
}
// alert(Object.isExtensible(o)); // true
// alert(Object.isSealed(o)); // false
// alert(Object.isFrozen(o)); // false
//
Object.freeze(o);
o.age = 23;
// alert(o.age); // undefined
//
delete o.name;
// alert(o.name); // zhang
//
o.name = "li";
// alert(o.name);
alert(Object.isExtensible(o)); // false
alert(Object.isSealed(o)); // true
alert(Object.isFrozen(o)); // true