javascript - ES5 中 Object.freeze 的效果可以逆转吗?

标签 javascript ecmascript-5

一旦我这样做:

var x = { };
Object.freeze( x );

有什么办法可以修改x吗? 谢谢。

最佳答案

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

你可以这样想:

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 会在创建后将对象的 writableconfigurable 标志设置为 false。

关于javascript - ES5 中 Object.freeze 的效果可以逆转吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442748/

相关文章:

typescript - 泛型:TS2345 'T[keyof T]' 类型的参数不可分配给 'Date' 类型的参数,其中 <T extends {}>

javascript - 将新属性分配给具有卡住原型(prototype)的空对象

javascript - 资源解释为脚本,但使用 MIME 类型 text/x-js 进行传输

javascript - 适当的非字符串 Javascript 异常

c# - c#中的toFixed函数

javascript - angular.isDefined() 与 obj.hasOwnProperty()

javascript - 在 React-Native 中将指定 HTML 标签之间的文本内容设为大写

javascript - Node.js 全局 eval,抛出 ReferenceError

javascript - 将变量放入一个

javascript - 如何将图像对象传递给分配给它的 onclick 函数?