资讯专栏INFORMATION COLUMN

彻底冻结js对象

longmon / 1765人阅读

摘要:不是对象利用递归不仅冻结对象本身,同时冻结它的属性值为对象的属性,这样不管是声明的对象还是声明的对象,都将不能修改此对象的任何属性。方法返回对象中可枚举属性组成的数组。

function completelyFreezeObj = (obj) => {
  if(Object.prototype.toString.call(obj) != "[object Object]"){
      console.error("obj不是对象");
      return;
  }
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if (Object.prototype.toString.call(obj[key]) == "[object Object]") {
      completelyFreezeObj(obj[key]);
    }
  });
};

利用递归不仅冻结对象本身,同时冻结它的属性值为对象的属性,这样不管是let声明的对象还是var声明的对象,都将不能修改此对象的任何属性。
Object.keys()方法返回对象中可枚举属性组成的数组。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104475.html

相关文章

  • const声明常量以及冻结一个对象

    摘要:是新增加的关键字,作用是声明一个只读变量。暂时性死区块级作用域声明的值是基础数据类型,那么这个变量的值就不可以改变。 const是ES6新增加的关键字,作用是声明一个只读变量。这个变量指向的内容地址是不可以改动的。 const a = 1 a = 4 // TypeError: Assignment to constant variable. 和let一样,它也有暂时性死区和块级作...

    jeyhan 评论0 收藏0
  • 面试宝典

    摘要:有谈谈面试与面试题对于前端面试的一些看法。动态规划算法的思想及实现方法帮大家理清动态规划的解决思路以及原理方法前端经典面试题从输入到页面加载发生了什么这是一篇开发的科普类文章,涉及到优化等多个方面。极客学院前端练习题道练习题,面试季练练手。 由数据绑定和排序引入的几个 JavaScript 知识点 在 JavaScript 的数据绑定和做简单的表格排序中遇到的几个知识点 [[JS 基础...

    neu 评论0 收藏0
  • 攻克前端javascript面试:什么是函数式编程?

    摘要:仅在几年以前,仅有少数的程序员知道函数式编程是什么。函数式编程是声明性的而不是命令式的应用状态流经纯函数中。函数式编程是一种编程模式。在理解软件是如何使用函数式编程构建时,理解函数组合是非常重要的一步。不可变性是函数式编程的核心概念。 函数式编程已然变成了一个javascript语言中一个非常热门的话题。仅在几年以前,仅有少数的js程序员知道函数式编程是什么。但是在过去三年中,我所见过...

    wslongchen 评论0 收藏0
  • 深入前端-彻底搞懂浏览器运行机制

    摘要:当这些异步任务发生的时候,它们将会被放入浏览器的事件任务队列中去,等到运行时执行线程空闲时候才会按照队列先进先出的原则被一一执行,但终究还是单线程。 浏览器是多进程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser进程: 浏览器的主进程(负责协调、主控),只有一个。 负...

    YPHP 评论0 收藏0
  • 深入前端-彻底搞懂浏览器运行机制

    摘要:当这些异步任务发生的时候,它们将会被放入浏览器的事件任务队列中去,等到运行时执行线程空闲时候才会按照队列先进先出的原则被一一执行,但终究还是单线程。 浏览器是多进程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser进程: 浏览器的主进程(负责协调、主控),只有一个。 负...

    Youngs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<