摘要:不是对象利用递归不仅冻结对象本身,同时冻结它的属性值为对象的属性,这样不管是声明的对象还是声明的对象,都将不能修改此对象的任何属性。方法返回对象中可枚举属性组成的数组。
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是ES6新增加的关键字,作用是声明一个只读变量。这个变量指向的内容地址是不可以改动的。 const a = 1 a = 4 // TypeError: Assignment to constant variable. 和let一样,它也有暂时性死区和块级作...
摘要:仅在几年以前,仅有少数的程序员知道函数式编程是什么。函数式编程是声明性的而不是命令式的应用状态流经纯函数中。函数式编程是一种编程模式。在理解软件是如何使用函数式编程构建时,理解函数组合是非常重要的一步。不可变性是函数式编程的核心概念。 函数式编程已然变成了一个javascript语言中一个非常热门的话题。仅在几年以前,仅有少数的js程序员知道函数式编程是什么。但是在过去三年中,我所见过...
摘要:当这些异步任务发生的时候,它们将会被放入浏览器的事件任务队列中去,等到运行时执行线程空闲时候才会按照队列先进先出的原则被一一执行,但终究还是单线程。 浏览器是多进程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser进程: 浏览器的主进程(负责协调、主控),只有一个。 负...
摘要:当这些异步任务发生的时候,它们将会被放入浏览器的事件任务队列中去,等到运行时执行线程空闲时候才会按照队列先进先出的原则被一一执行,但终究还是单线程。 浏览器是多进程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser进程: 浏览器的主进程(负责协调、主控),只有一个。 负...
阅读 3607·2021-11-15 11:37
阅读 2974·2021-11-12 10:36
阅读 4402·2021-09-22 15:51
阅读 2381·2021-08-27 16:18
阅读 881·2019-08-30 15:44
阅读 2163·2019-08-30 10:58
阅读 1768·2019-08-29 17:18
阅读 3268·2019-08-28 18:25