1.如果咱们想要确保对象被深冻结,就必须创建一个递归函数来冻结对象类型的每个属性:

2.没有深冻结

> let person = {
>     name: "Leonardo",
>     profession: {
>         name: "developer"
>     } }; Object.freeze(person); person.profession.name = "doctor"; console.log(person); //output { name: 'Leonardo', profession: { name:
> 'doctor' } }

3.深冻结

> function deepFreeze(object) {
>     let propNames = Object.getOwnPropertyNames(object);
>     for (let name of propNames) {
>         let value = object[name];
>         object[name] = value && typeof value === "object" ? deepFreeze(value) : value;
>     }
>     return Object.freeze(object); } let person = {
>     name: "Leonardo",
>     profession: {
>         name: "developer"
>     } }; deepFreeze(person); person.profession.name = "doctor"; // TypeError: Cannot assign to read only property
了解更多前端课程相关技术欢迎关注小编!

如何在 JS 中“深冻结”对象?相关推荐

  1. JavaScript 日期比较——如何在 JS 中比较日期

    日期是开发人员在创建实际应用程序时最常用的数据类型之一. 但通常,开发人员会在这种数据类型上苦苦挣扎,最终使用像 Moment.js 这样的日期库来完成简单的任务,这些任务不值得安装整个包所带来的大包 ...

  2. js中的DOM对象和jQuery对象的比较

    1. 二者的不同之处: 通过jQuery获取的元素是一个数组, 数组中包含着原生JS中的DOM对象. 例如, 针对下面的一个div结构: <div id="Box">& ...

  3. js中两个对象的比较

    代码取自于underscore.js 1.8.3的isEqual函数. 做了一些小小的修改,主要是Function的比较修改. 自己也加了一些代码解读. <!DOCTYPE html> & ...

  4. JavaScript -- 时光流逝(三):js中的 String 对象的方法

    JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...

  5. js中关于Blob对象的介绍与使用

    js中关于Blob对象的介绍与使用 blob对象介绍 一个 Blob对象表示一个不可变的, 原始数据的类似文件对象.Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是js ...

  6. 如何在JS中应用正则表达式

    背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: 1 $("#zhengze").click(function () { 2 ...

  7. js mysql json字符串转数组中_php数据库数据转换为js中的json对象

    / 1.在company数据user表中取出10条数据,保存为数组 2.在将数组转化为json格式,传递给js 3.用json解析器将传递过来的json字符串转化为json对象, 4.用documen ...

  8. js中几个对象的区别和用法

    js中几个对象的区别和用法 今天总结一下js中几个对象的区别和用法: 首先来说说 parent.window与top.window的用法 "window.location.href" ...

  9. 【JS笔记】JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性、DOM增删改查

    这篇文章,主要介绍JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性.DOM增删改查​​​​​​​. 目录 一.JS中的DOM 1.1.什么是DOM 1.2.获取DOM结点 (1)获取htm ...

最新文章

  1. Symfony 使用 hwi/oauth-bundle 实现第三方登录
  2. php示例代码使用mysql_fetch_assoc函数
  3. TensorFlow产品总监:机器学习进步让AI应用成可能
  4. 为什么局部内部类和匿名内部类只能访问 final 的局部变量?
  5. in 和 exist 区别
  6. HDU 1301 Jungle Roads(裸最小生成树)
  7. parted如何将磁盘所有空间格式化_CentOS下大于2T的硬盘格式化问题
  8. Linux下mysql设置密码
  9. mysql:修改root初始化密码
  10. arcgis将点的属性赋值给面
  11. 怎么把文件上传云服务器上,如何把文件上传到云服务器上
  12. CMake使用详解二(多文件编译)
  13. JavaScript ES5之Object.create函数详解
  14. gb2312编码在线转换_文件打开乱码?来了解一下文件编码
  15. 电子科技大学计算机学院图章,桂林电子科技大学印章管理暂行规定
  16. 实验七 Matlab GUI设计
  17. YOLOv2原文解读
  18. php model module,Yii2用Gii自动生成Module+Model+CRUD
  19. linux中pwd命令,pwd命令
  20. ROC-RK3328-CC 开发板开箱和上手指南

热门文章

  1. Word书写Latex之Aurora的安装总结
  2. [收藏]ORACLE函数搜罗
  3. 【天光学术】儿童文学论文:林良童诗的诗语的浅白简约及意境之美(节选)
  4. 家用计算机 阵列,家用PC组建RAID全攻略
  5. python调用按键精灵插件_开发中IDE的选择?如何在VsCode上配置CC++,Java,Python环境...
  6. GeForce 1080Ti显卡驱动+cuda8.0+cudnn6.0 外加TensorFlow-GPU
  7. tk6071iq怎么恢复出厂设置_TK6071IQ触摸屏怎么用U盘下载程序
  8. 深度学习 第三章 tensorflow手写数字识别
  9. 解除自己微信绑定的小程序公众号开发者
  10. idm如何下载种子文件和磁力链接 idm如何下载torrent