愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

搜索分类ECMAScript下的文章

《ECMAScript6入门》学习笔记之async函数

ES7引入了async函数,使得异步操作变为更加方便和简单。async本质上是generator函数的语法糖 一、介绍 我们现在需要依次读取两个文件,使用generator写,如下: const fs = require('fs') const readFi...

《ECMAScript6入门》学习笔记之Generator的异步应用

一、基本概念 1、异步 如果一个任务不是连续完成的,那么该任务可以被人为划分为两段,先执行第一段,然后转而执行其他任务,等做好了准备再回过头来准备第二段。而相应的,如果一个任务需要连续执行,中途不能被其他任务插入,那么这种任务就是同步的。 2、回调函数 回调函数就是将函数的第二段写在一个函数里,等到重新执行这个任务的时候,就直接调用该函数,即

《ECMAScript6入门》学习笔记之Generator的语法

一、介绍 generator是ES6提供的一种异步编程解决方案,从语法上,可以将其理解为一个状态机,封装了多个内部状态。 执行generator函数,会返回一个遍历器对象,所以 generator也是一个遍历器对象生成函数,返回的遍历器对象,可以遍历generator函数内部的每一个状态,定义一个generator函数如:

《ECMAScript6入门》学习笔记之Iterator和for-of

一、基本概念 iterator(迭代器)提供一种统一的接口,用以遍历一个集合型的数据结构。只要一个数据结构实现了iterator接口,那么它就能够: 1)使用for-of遍历 2)被展开运算符(...)展开 使用Typescript来描述迭代器接口的话,可以表示如下:

《ECMAScript6入门》学习笔记之Promise

一、异步编程 由于JavaScript引擎是基于单线程、事件循环的,所以同一时刻只允许一个代码块在执行。在同一时刻中,JavaScript引擎只能执行一个代码块,而其他不在同一个事件循环中的代码块会被放在任务队列中,当当前代码块执行完毕后,事件循环(event loop)会执行队列中的下一个任务。传统上,实现异步编程的解决方案有:

《ECMAScript6入门》学习笔记之Proxy

Proxy用于修改某些操作的默认行为,相当于在语言层面做出修改。可以认为是在目标对象之前架设了一层拦截,外界对目标对象的访问,都需要首先经过拦截层 一、示例 我们可以使用Proxy来拦截一个对象的属性的读写操作: const rea...

《ECMAScript6入门》学习笔记之Class的继承

ES6中引入了class关键字来作为实现类的语法糖,与此同时,ES6中的类也支持继承的概念,以下为继承的学习总结 一、简介 一个简单的继承例子为: class A { // some codes } class B exten...

《ECMAScript6入门》学习笔记之Set和Map

Set()和Map()是ES6中新引入的两种数据结构,Set()同数学上的集合,其子元素不会重复。而Map()则是用来更好实现键值对映射的数据结构,解决了Object中键的类型只能为string的限制 一、基本用法 创建一个Set和一个Map的方法是类似的,都是用构造函数:

《ECMAScript6入门》学习笔记之Symbol

一、基础知识 Symbol是JavaScript的第7种数据类型,用来表示具有唯一性的值,创建一个symbol数据类型的变量,要通过Symbol()函数,如: let s = Symbol(); typeof s; // 'symbol' ...

《ECMAScript6入门》学习笔记之对象的扩展

一、属性的简洁表示法 当对象中属性的key名称和value对应的变量名称相同时,可以只写key名称,如: var foo = '123'; var obj = { foo }; // 这相当于: var obj = { foo: foo } 除了属性可以简写,方法也可以简写,...

《ECMAScript6入门》学习笔记之数组的扩展

一、扩展运算符 ES6引入了扩展运算符...,它可以将一个数组或者一个iterable的对象展开。用法有: console.log(...[1, 2, 3]); // 相当于: console.log(1, 2, 3); 1、展开运算符可以部分代替

《ECMAScript6入门》学习笔记之Class

ES6中开始引入了class这一关键字,使得能够以更加清晰的方法来定义类和使用类。实际上,class本质上是一个语法糖 一、示例 定义一个类形如: class Point { constructor...

《ECMAScript6入门》学习笔记之解构

ES6中引入了解构的特性,允许我们以一种更简短的方式来实现数组、对象成员赋值给各种变量 一、传统场景 我们想要提取数组中的元素到不同的变量中,传统做法如下: var arr = ['A', 'B', 'C']; var a = arr[0]; // 'A' ...

《ECMAScript6入门》学习笔记之Module

在ES6之前,JavaScript中是没有模块这一概念的。为了适应日益增长的前端工程化需求,ES6中引入了Module的概念。ES6中的模块化思想,是尽量的静态化,使得能够在编译的时候就能够确定模块间的依赖关系、输入输出之间的关系,这是有助于编译时做静态优化的 一、ES6模块特点