一旦我这样做了:
var x = { };
Object.freeze( x );
有没有办法修改x? 感谢。
答案 0 :(得分:2)
无法在冻结的属性集中添加或删除任何内容 宾语。任何这样做的尝试都会失败,无论是默默还是投掷 一个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。
答案 1 :(得分:1)
不,Object.freeze
的想法是你不能再改变它了。根据{{3}}:
本质上,对象实际上是不可变的。
和
无法在冻结对象的属性集中添加或删除任何内容。任何这样做的尝试都会失败,......