一旦我这样做:
var x = { };
Object.freeze( x );
有没有办法修改x?谢谢。
不能在冻结对象的属性集中添加或删除任何内容。任何这样做的尝试都会失败,无论是静默还是抛出 TypeError 异常(最常见但不限于,在严格模式下)。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze
你可以这样想:
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
所以基本上,freeze
将在创建后将对象writable
和configurable
标志设置为 false。