
深入理解ES6
文章平均质量分 72
深入理解ES6
forwardNow
持续学习
展开
-
《深入理解ES6》第十三章 用模块封装代码
第十三章 用模块封装代码《深入理解ES6》—— Nicholas C. Zakas其他语言使用包(package)之类的概念来定义代码的作用域,而JS则是“共享一切”,这是该语言混乱且易出错的方面之一。ES6的模块就是为了解决作用域的问题,让JS应用变得更有条理。1. 何为模块?模块(Modules)是使用不同方式加载的JS文件。与JS原先的脚本加载方式不同。它与脚本(script)有不同的语义:代码自动运行在严格模式在顶级作用域创建的变量,不会添加到全局作用域。顶级作用域的 t原创 2021-06-28 20:47:38 · 350 阅读 · 2 评论 -
《深入理解ES6》第十一章 Promise 与 异步编程
第十一章 Promise 与 异步编程《深入理解ES6》—— Nicholas C. ZakasJS能极其轻易地处理异步编程,如响应 点击或按键 之类的用户交互行为。node.js 通过使用回调函数来代替事件,进一步推动了JS中的异步编程。随着异步编程面对的场景日益复杂,事件与回调 已不足以支持所有需求,Promise应运而生。Promise 是异步编程的一种选择,延迟并在将来执行作业。1. 异步编程的背景1.1. 说明JS引擎建立在单线程事件循环的概念上。单线程:单线程(sing原创 2021-06-27 12:04:45 · 317 阅读 · 1 评论 -
《深入理解ES6》第十章 增强的数组
第十章 增强的数组《深入理解ES6》—— Nicholas C. Zakas1. 创建数组ES6之前创建数组的方式:Array构造器数组字面量无法直接将 类数组对象(有数值类型索引和length属性) 转换为真正的数组。ES6 新增了 Array.of() 、 Array.from() 方法创建数组。1.1. Array.of() 方法let items = new Array( 2 );items.length; //=> 2items[ 0 ]; //=>原创 2021-06-26 11:40:33 · 329 阅读 · 0 评论 -
《深入理解ES6》第九章 JS的类
第九章 JS的类《深入理解ES6》—— Nicholas C. ZakasJS从创建之初就不支持类,也没有把类继承作为定义相似对象以及关联对象的主要方式。很多库都创建了一些工具,让JS显得貌似能支持类,导致ES6最终引入了类。ES6的类并不与其他语言的类完全相同,所具备的独特性正配合了JS的动态本质。1. ES5中的仿类结构ES6之前不存在类,但与类最接近的是:创建一个构造器,然后将方法指派到该构造器的原型上。这种方式通常被称为创建一个自定义类型,如:function Person原创 2021-06-25 21:56:42 · 342 阅读 · 0 评论 -
《深入理解ES6》第八章 迭代器与生成器
第八章 迭代器与生成器《深入理解ES6》—— Nicholas C. Zakas许多编程语言都将迭代器数据的方式从使用 for 循环转变到使用迭代器对象,for循环需要初始化变量以便追踪集合内的位置,而迭代器则以编程方式返回集合中的下一个项。1. 循环的问题var colors = [ "red", "green", "blue" ];for ( var i = 0, len = colors.length; i < len; i++ ) { console.info( c原创 2021-06-24 21:05:12 · 279 阅读 · 1 评论 -
《深入理解ES6》第七章 Set 与 Map
第七章 Set 与 Map《深入理解ES6》—— Nicholas C. ZakasES6之前 JS只存在一种集合类型,就是数组类型。数组只使用了数值型的索引,而如果非数值型的索引是必要的,开发者就会使用非数组的对象。这种技巧引入了非数组对象的定制实现,即 Set 与 Map。Set 是不包含重复值的列表。Map则是键与相对应的值的集合。1. ES5中的 Set 与 Map1.1. 用对象模拟let set = Object.create( null );let map = Obje原创 2021-06-23 22:11:43 · 268 阅读 · 1 评论 -
《深入理解ES6》第六章 符号与符号属性
第六章 符号与符号属性《深入理解ES6》—— Nicholas C. Zakas1. 概述let id = Symbol('id');let person = { [id]: '001'};person[id]; // 001const symbols = Object.getOwnPropertySymbols(person);symbols; //=> [Symbol(id)]用于创建一个唯一的属性名,避免重名的属性名2. 总结符号是JS新引入的基本类型值,原创 2021-06-23 22:08:35 · 308 阅读 · 0 评论 -
《深入理解ES6》第五章 解构
第五章 解构《深入理解ES6》—— Nicholas C. Zakas1. 析构的用处在ES6之前,从对象或数组中获取信息,并将特定数据存入本地变量,需要书写许多相似的代码:let options = { repeat: true, save: false}// 从对象中提取数据let repeat = options.repeat, save = options.save;此段代码提取了 options 对象的属性,并将其存在同名的本地变量上。虽然简单,原创 2021-06-22 22:17:33 · 396 阅读 · 1 评论 -
《深入理解ES6》第四章 扩展对象的功能
第四章 扩展对象的功能《深入理解ES6》—— Nicholas C. Zakas1. 对象类型普通对象奇异对象标准对象内置对象2. 对象字面量的扩展2.1. 属性简写当对象的属性名称与变量名相同时,可以简单书写名称,而省略冒号和值。function createPerson( name,age ) { return { name: name, age: age } // 简写 return { n原创 2021-06-21 20:09:48 · 276 阅读 · 0 评论 -
《深入理解ES6》第三章 函数
函数《深入理解ES6》—— Nicholas C. Zakas在ES5函数之上,进行增量改进。1. 参数默认值参数默认值 让函数在接收到的参数数量不足时行为更清晰。1.1. JS函数的特点调用时可接受任意数量的参数,而无视函数声明处的参数数量。1.2. ES5中模拟利用逻辑或运算符(||),当左侧的值为假时,返回右侧的操作数。function makeRequest( url, timeout, calback ) { // 方式一 timeout = timeout原创 2021-06-20 21:30:49 · 323 阅读 · 1 评论 -
《深入理解ES6》第二章 字符串与正则表达式
第二章 字符串与正则表达式《深入理解ES6》—— Nicholas C. ZakasES6加强了字符串和正则表达式。1. 识别字符串的方法includes()startsWith()endsWith()2. repeat() 方法"x".repeat( 3 ); //=> "xxx"可应用于需要产生缩进的地方。3. 模板字面量3.1. 语法使用反引号包裹普通字符串:`hello world!`使用反斜杠(\)转义字符串中的反引号:`hello \`world!原创 2021-06-19 22:54:55 · 238 阅读 · 0 评论 -
《深入理解ES6》第一章 块级绑定
第一章 块级绑定《深入理解ES6》—— Nicholas C. Zakas在大多数类C语言中,变量(或绑定)总是在它被声明的地方创建;然而JS的变量实际创建的位置取决于你如何声明它。ES6能让你更轻易地控制变量的作用域。1. var声明与变量提升变量提升(hoisting):使用var关键字声明的变量,无论实际声明位置在何处,都被视为在所在函数的顶部声明。因为 这种特有行为可能导致bug,所以 ES6引入了块级作用域,让变量的生命周期更加可控,以及与其他语言保持一致。2. 块级声明原创 2021-06-18 23:28:01 · 229 阅读 · 0 评论