Can the effect of Object.freeze be reversed in ES5?
Once I do this:
var x = { };
Object.freeze( x )开发者_JS百科;
Is there any way to modify x? Thanks.
Nothing can be added to or removed from the properties set of a frozen object. Any attempt to do so will fail, either silently or by throwing a TypeError exception (most commonly, but not exclusively, when in strict mode).
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze
You can think about it like this:
if( typeof ChuckNorris === 'undefined' ) {
ChuckNorris = Object.create( [Infinity], {
canCountTo: {
value: Infinity * 2,
writable: true,
configurable: true
}
});
Object.freeze( ChuckNorris ); // nothing can harm Chuck anymore !
}
console.log( ChuckNorris.canCountTo ); // Infinity
delete ChuckNorris.canCountTo;
console.log( ChuckNorris.canCountTo ); // Infinity
So basically, freeze will set the objects writable and configurable flags to false after creation.
No, the idea of Object.freeze is that you cannot change it anymore. According to the documentation:
In essence the object is made effectively immutable.
and:
Nothing can be added to or removed from the properties set of a frozen object. Any attempt to do so will fail, ...
加载中,请稍侯......
精彩评论