deepFreeze
2024-08-27 21:07:39
obj1 = {
internal: {}
}; Object.freeze(obj1);
obj1.internal.a = 'aValue'; obj1.internal.a // 'aValue' // To make obj fully immutable, freeze each object in obj.
// To do so, we use this function.
function deepFreeze(obj) { // Retrieve the property names defined on obj
var propNames = Object.getOwnPropertyNames(obj); // Freeze properties before freezing self
propNames.forEach(function(name) {
var prop = obj[name]; // Freeze prop if it is an object
if (typeof prop == 'object' && prop !== null)
deepFreeze(prop);
}); // Freeze self (no-op if already frozen)
return Object.freeze(obj);
} obj2 = {
internal: {}
}; deepFreeze(obj2);
obj2.internal.a = 'anotherValue';
obj2.internal.a; // undefined
最新文章
- ajax之 get post请求
- LoadRunner 函数之lr_xml_get_values
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
- Object-c:两种文件读写的对比
- Oracle笔记 十一、PL/SQL函数和触发器
- Android点击按钮实现全屏的代码
- 数往知来 JavaScript<;十三>;
- Trainning Guide, Data Structures, Example
- C#学习笔记9:C#中的变量、转义符、显式转换和隐式转换
- Python基础 1----Python语言基础和Python环境准备与安装
- scipy安装失败
- 转载:IntelliJ Idea 常用快捷键列表
- myeclipse复制项目
- shell编程 之 传递参数到脚本里
- Sci_DRead_ParaBuzzerDriver_st_BuzzerSoundOpening1
- 001-快速搭建Spring web应用【springboot 2.0.4】-gradle、springboot的启动过程分析、gradle多模块构建
- syslog、日志服务器安装、卸载详解、如何安装和卸载EventLog Analyzer
- MariaDB的存储过程和函数
- [转] JSON转换
- English trip -- VC(情景课)9 C What are they doing? 他们在做什么?