![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《深入理解ES6》阅读总结
记录个人阅读《深入理解ES6》这本书之后的一些总结
明致成
人生海海,山山而川,不过尔尔!
展开
-
1、块级作用域绑定
第一章、块级作用域绑定 1、const声明不允许修改绑定,但允许修改绑定的值。即用const声明对象后,可以修改该对象的属性值,但不能重新给该变量赋值。 2、块级作用域的特色:TDZ(临时死区) 3、用let和const定义的变量不会覆盖全局变量,即不会将定义的属性添加到window对象上。 开发原则:默认使用const,当确定某些变量要改变时,再使用let。 ...原创 2019-11-08 15:36:15 · 166 阅读 · 0 评论 -
2、字符串和正则表达式
第二章、字符串和正则表达式 1、在ES6出现前后的编码差异:16位的编码单元和32位的编码单元 使用codePointAt()检测字符占用的编码单元数量,原理是16位的编码单元字符上限是0xFFFF function is32Bit(c){ return c.codePointAt(0) > 0xFFFF; } 根据...原创 2019-11-08 15:36:52 · 170 阅读 · 0 评论 -
3、函数
第三章、函数 1、函数形参可以指定默认值,并且默认值所在的形参不会自动添加到arguments对象中。 2、函数形参可以用表达式作为默认值,也可以用先定义的形参作为后定义的形参的默认值, 但不能用后定义的形参作为先定义的形参的默认值,否则会进入函数默认参数的临时死区。 3、函数参数有自己的作用域和临时死区,其与函数体的作用域是各自独立的,即参数的默认值不可访问函数体内声明的...原创 2019-11-08 15:37:29 · 119 阅读 · 0 评论 -
4、扩展对象的功能性
第四章、扩展对象的功能性 1、对象字面量语法扩展 当一个对象的属性与本地变量同名时,不必再写冒号和值,简单的只写属性名即可。 2、可计算属性名 任何可用于对象实例括号记法[]的属性名,也可以作为字面量中的计算属性名。 3、新增方法 1、Object.is():比较两个值是否相等,它是弥补===的不准确运算。 ...原创 2019-11-08 15:38:27 · 226 阅读 · 0 评论 -
5、解构:使数据访问更便捷
第五章、解构:使数据访问更便捷 1、对象解构赋值 1、默认值 let node = { type : "js", name: "lisi" }; let { type, name, value = tr...原创 2019-11-15 14:49:25 · 143 阅读 · 0 评论 -
6、Symbol和Symbol属性
第六章、Symbol和Symbol属性 1、创建Symbol let firstName = Symbol(); Symbol是原始值,不可以使用new Symbol()创建 Symbol接受一个可选参数,为Symbol添加文本描述,描述被存储在[[Description]]属性,该属性不可直接在代码中访问,只...原创 2019-11-15 14:50:39 · 644 阅读 · 0 评论 -
7、Set集合与Map集合
第七章、Set集合与Map集合 1、检查对象的属性是否存在: in操作符:不需要读取对象的值就可以判断属性是否存在对象中,存在返回true,否在返回false。 备注:in操作符会检索对象的原型,只能在对象原型为null时使用。 2、Set集合:有序唯一 1、创建Set集合并添加元素 let set = new Set();...原创 2019-11-16 16:03:51 · 164 阅读 · 0 评论 -
8、迭代器和生成器
第八章、迭代器和生成器 1、什么是迭代器 迭代器是一种特殊对象,所有的迭代器对象都有一个next()方法,每次调用都返回一个结果对象; 结果对象有两个属性:value表示下一个将要返回的值/undefined,done一个布尔类型的值,表示没有可返回数据时返回true; 迭代器还会保存一个内部指针,用来指向当前集合中值得位置。 ...原创 2019-11-17 12:10:03 · 150 阅读 · 0 评论 -
9、JavaScript中的类
第九章、JavaScript中的类 1、类的声明 1、基本的类声明语法 不需要在类的个元素之间使用逗号隔开。类除了constructor外没有其他保留的方法名。 class PersonClass { constructor(name){ this.name = name; } sayName(){ console.log(this.name); }...原创 2019-11-24 13:25:38 · 99 阅读 · 0 评论 -
10、改进的数组功能
第十章、改进的数组功能 1、创建数组 传统的创建数组的方法:调用Array构造函数和数组字面量语法。 将一个类数组(具有数值型索引和length属性的对象)转换为数组的方法:Array.of()和Array.from() 1、Array.of()方法 因为通过Array构造函数创建数组的时候,传参的类型与数量会影响数组的length: ...原创 2019-11-24 19:05:40 · 152 阅读 · 0 评论 -
11、Promise与异步编程
第十一章、Promise与异步编程 1、异步编程的背景知识 JavaScript引擎是基于单线程事件循环的概念构建的,同一时刻只允许一个代码块执行。 即将运行的代码块都是被放在任务队列(job queue)中,当JavaScript引擎一段代码执行结束时,事件循环(event loop)会将任务队列的第一个代码块交给JavaScript引擎进行执行,知道任务队列中的任务执行完毕。...原创 2019-12-01 15:43:11 · 130 阅读 · 0 评论 -
12、代理(Proxy)和反射(Reflection)API
第十二章、代理(Proxy)和反射(Reflection)API 代理Proxy是一种可以拦截并改变底层JavaScript引擎的包装器,在新语言中通过它暴露内部运作的对象。 1、数组问题 ES6出现以前,开发者不能通过自己定义的对象模仿JavaScript数组对象的行为方式。 当给数组的特定元素赋值时,影响到数组的length属性;也可以通过length属性修改数组元素...原创 2019-12-01 20:19:55 · 236 阅读 · 0 评论 -
13、用模块封装代码
1、什么是模块 模块试运行在严格模式下并且没有办法退出运行的JavaScript代码。 ①、在模块顶部创建的变量不会自动被添加到全局共享作用域,模块必须导出一些外部代码可以访问的元素。模块也可以从其他模块导入绑定。 ②、在模块的顶部,this的值是undefined ③、模块不支持HTML风格的代码注释 2、导出的基本语法 // 导出数据 export var...原创 2019-12-22 21:20:57 · 267 阅读 · 0 评论 -
附录A、ECMAScript 6中较小的改动
1、使用整数 JavaScript使用IEEE 754编码系统来表示整数和浮点数。 ①、识别整数 Number.isInteger():确定一个值是否为JavaScript整数类型。 有些数字看起来像浮点数,却存储为整数。 console.log(Number.isInteger(25)); // true console.log(Numbe...原创 2019-12-22 21:23:39 · 112 阅读 · 0 评论 -
附录B、了解ECMAScript 2016
1、指数运算符 Math.pow()方法可以执行求幂运算。 a ** b也可以求幂运算。 let result = 5 ** 2; console.log(result); // 25 console.log(result === Math.pow(5,2)); // true ①、运算顺序 求幂运算符在js所有二进制运算符中具有最高的优先级(一元运...原创 2019-12-22 21:26:16 · 141 阅读 · 0 评论