在ES5中Object.freeze的效果可以被逆转吗?
Can the effect of Object.freeze be reversed in ES5?
一旦我这样做:
var x = { };
Object.freeze( x );
有办法修改x吗?谢谢。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze不能从冻结对象的属性集中添加或删除任何内容对象。任何这样做的尝试都会失败,要么是无声地失败,要么是抛出失败TypeError异常(最常见,但不是唯一的)严格模式)。
你可以这样想:
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。
不,Object.freeze
的想法是你不能再改变它了。根据文档:
实质上,对象是不可变的。
:
不能向冻结对象的属性集添加或删除任何内容。任何这样做的尝试都将失败,
相关文章:
- Unexpected Transpile ES6>ES5
- 使用ES5进行角度2 rc.1测试
- ES5”;严格的“;和论点
- JS [ES5] 如何使用资源库和获取器分配对象
- 有没有办法将包含 es6 的字符串转换为 es5
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- 如何导入“;旧的“;ES6中的ES5代码
- 确认ES5支持
- getter和setter只适用于ES5中的基元值吗
- 在es5中使用angular 2 http客户端
- 使用ES5阵列方法和ES6生成器
- 为什么我需要的库没有从ES6转换到ES5
- 敲除-ES5不工作
- ES5上的Angular2 Http提供程序(不是TypeScript)
- JQuery css() 效果逆转,除非我事先调用 alert('时间浪费')
- 使用 SystemJS/jspm 在生产环境中加载异步的 es5 模块
- Google dart是否生产ES5友好的javascript,并且今天是否包括或排除IE8
- Javascript:(ES5)数组迭代的权威指南
- ES6 -- 导入 es5 文件
- 在ES5中Object.freeze的效果可以被逆转吗?