分享一个彻底冻结对象的函数——来自阮一峰老师的《ecmascript6入门》

好来污影后 好来污影后     2022-10-09     531

关键词:

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === ‘object‘ ) {
      constantize( obj[key] );
    }
  });
};

冻结对象的用处:

冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。

也就是说,这个对象永远是不可变的。

 

阮一峰老师的javascript标准参考教程:object对象和object方法(代码片段)

...obj=foo:‘Hello‘,bar:‘World‘;上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象 查看详情

阮一峰老师的es6入门:变量的解构赋值(代码片段)

变量的解构赋值数组的解构赋值对象的解构赋值字符串的解构赋值数值和布尔值的解构赋值函数参数的解构赋值圆括号问题用途数组的解构赋值基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为... 查看详情

关于阮一峰老师es6(第三版)中管道机制代码的理解浅析

...第七章《函数的扩展》中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下://es6(第三版)教材中的管道机制源代码:constpipeline=(...funcs)=>val=>funcs.reduce((a,b)=>b(a),val);constplus1=a=>a+1;co 查看详情

阮一峰老师的javascript标准参考教程:数组array对象和array对象方法(代码片段)

...示。vararr=[‘a‘,‘b‘,‘c‘];上面代码中的a、b、c就构成一个数组,两端的方括号是数组的标志。a是0号位置,b是1号位置,c是2号位置。除了在定义时赋值,数组也可以先定义后赋值。vararr=[];arr[0]=‘a‘;arr[1]=‘b‘;arr[2]=‘c‘;... 查看详情

一个将对象彻底冻结的函数(代码片段)

varconstantize=(obj)=>Object.freeze(obj);Object.keys(obj).forEach((key,i)=>if(typeofobj[key]===‘object‘)constantize(obj[key]););;  查看详情

闭包——读《阮一峰的日志》

...量时,可利用Javascript语言特有的"链式作用域"结构——子对象可以一级一级地向上寻找所有父对象的变量(内部局部变量特性),在 查看详情

flex布局(引用阮一峰老师的flex布局-语法篇)(代码片段)

...为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。.boxdisplay:flex;行内元素也可以使用Flex布局。.boxdisplay:inline-flex;Webkit内核的浏览器,必须加上-webkit前缀。.boxdisplay:-webkit-flex;/*Safari*/ 查看详情

[转帖]阮一峰:哈希碰撞与生日攻击(代码片段)

哈希碰撞与生日攻击分享按钮作者: 阮一峰日期: 2018年9月5日一、哈希碰撞是什么?所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。如果不同的输... 查看详情

react入门实例教程[阮一峰的网络日志](分享)

作者: 阮一峰https://github.com/ruanyf/react-demos 转自:http://www.ruanyifeng.com/blog/2015/03/react.html对着文章的说明,看明白了,再跑下demo.... 查看详情

阮一峰老师javascript课程学习笔记

1、switch采用的是严格相等运算符2、break和continue都具有跳转作用,break语句跳出循环,continue用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。3、JavaScript内部所有数字都是以64位浮点数形式存储,涉及小数的运算... 查看详情

苹果是真牛逼

...分钟速读仅需1分钟大家好,我是校长。今天跟大家聊一个有意思的话题。前几天我看到阮一峰老师发布的网络日志,是关于软件订阅制的话题。说句题外话,我个人非常喜欢看阮一峰老师的网络日志,也经常看他... 查看详情

《es6标准入门》(阮一峰)--15.reflect(代码片段)

...,Object.defineProperty(obj,name,desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj,name,desc)则会返回false。//老写法tryObject.defineProperty(target,property,attributes);//successcatch(e)//failure//新写法if(Reflect.defineProperty(target,property,attribu... 查看详情

from阮一峰

JavaScript面向对象编程(一):封装  原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html Javascript面向对象编程(二):构造函数的继承:  原文链接:http://www.ruanyifeng.com/blog/2010/05/object- 查看详情

读阮一峰老师es6入门笔记——第一章

  鉴于最近用vuejs框架开发项目,其中有很多涉及到es6语法不太理解所以便认真地读了一下这本书。  地址:http://es6.ruanyifeng.com/#README   第一章:let,const命令以及块级作用域  es6新增了let和const这两个变量的声明关... 查看详情

javascript面向对象编程:构造函数的继承

...之间的"继承"的五种方法。(来自阮一峰)比如,现在有一个"动物"对象的构造函数。functionAnimal(){    this.species="动物";  }还有一个"猫"对象的构造函数functionCat(name,color){    this.name=name;    this.color=color;  }怎... 查看详情

[jsonp]关于jsonp的几个点(代码片段)

...讲解得很清楚了,这里只是记录一些关于JSONP的点。回调函数的命名在阮老师的博客中举的例子是回调函数命名为foo,在实际使用环境中回调函数一般是搭配着随机数使用,使用时实时生成,使用过后销毁此函数。如://客户端... 查看详情

深入理解jsthis,作用域

...log/2010/04/using_this_keyword_in_javascript.htmlthis是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,  functiontest(){    this.x=1;  }阮老师说this&n 查看详情

阮老师详解es6运算符扩展,浅显易懂!(代码片段)

...,之前我介绍过一篇关于ES6运算符的文章,今天分享阮一峰老师的一篇类似的文章,里面的分析和代码都很详细,希望对你有所帮助。目录指数运算符链判断运算符Null判断运算符逻辑赋值运算符1.指数运算符ES2016... 查看详情