1.使用let声明变量
let 之间互不影响,使用 for 循环for(let i=0;i<arr.length;i++){}会生成多个 let 给多个作用域使用,互不影响。

2.const声明变量

3.解构赋值


4.模板字符串

5.对象

6.箭头函数




使用箭头函数简化代码

7.允许给函数参数赋初始值

8.引入rest获取实参
ES5使用arguments获取实参,是一个对象,而ES6的rest获取实参是一个数组,可以使用数组的方法。

9.扩展运算符

应用

10.Symbol

10.1.对象中添加Symbol

10.2.内置Symbol值
11.向对象中添加方法

12.迭代器 yield



应用:使用Symbol按照需求遍历对象。



13.生成器gen,异步编程
生成器是一个函数,必须使用 next() 来调用。yield 将函数代码分块,每次调用 next() 执行一块。

next()的返回结果是一个对象,里面的value是yield后表达式的值,done 表示是否遍历完成 。

遍历gen,可以得到每个yield后表达式的值。

13.1.生成器传参数
next()传入的参数将作为上一个 yield 的返回值。

13.2.异步编程
回调地狱

使用生成器进行异步编程。
实例1

实例2

14.promise
p执行的结果将存在data或err中。
在p里面调用resolve表示成功,then那里将调用第一个回调,reject表示失败,会调用第二个回调。

实例:读取文件

14.1封装Ajax

14.2箭头函数写法

14.3链式调用
promise的then返回的还是一个promise。


then的回调可以只写一个成功的

14.4catch指定失败回调

15.set

集合会自动去除重复元素

15.1使用集合对数组进行去重、交、并、差

16.map
map是对象的升级版,键可以是各种类型。


17.class类

constructor是构造函数,写法是固定的。

17.1.静态属性
普通函数对象,下面代码中的name属性和change函数都属于Phone构造函数对象,而不属于新创建的 nokia 。

以下代码中的size属性添加到了Phone的原型对象上,nokia通过原型链能得到size。

class类对象,有static修饰的是静态属性,属于类(Phone)而不属于实例对象(nokia)。

17.2.类的继承
使用ES5实现的继承演示


ES6类的继承
父类

子类,使用super引入父类的属性,当子类调用call函数时,将沿着原型链 子类 -> 父类 -> Object 的顺序往上找,知道找到或走到尽头,此处在父类找到了call函数。
super只能在constructor中调用。

17.3.子类重写父类的方法
在子类写一个和父类方法重名的方法,将覆盖从父类继承而来的这个方法。
18.get和set


19.数值扩展


20.对象扩展

NaN和任何数比较,除了不等于,其他结果都是false,两个NaN比较也一样。

Object.assign合并对象,如果有同名属性,后者将覆盖前者。


21.模块化


在一个单独文件引入模块

再在页面使用script标签引入这个文件,type要设置为module。

22.ES7的新特性




23.ES8的新特性
23.1.async函数
23.2.await函数
await返回p成功的值,此处是用户数据,如果p失败,则需要try-catch来捕获。

23.3.两者结合案例


23.4.封装Ajax请求


23.5.Object.values 和 Object.entries

第一个获得键,第二个获得值,第三个获得键和值。

利用Map构造函数,使用Object.entries传入键值对,可以方便地填充到map里面

23.6.Object.getOwnPropertyDescriptors


对象里面有对象的详细信息,可以进行深层次的克隆。

24.ES9的新特性
24.1.对象扩展


24.2.正则表达式
24.2.1.命名捕获组
捕获组没有命名的写法:

捕获组命名的写法:
前后为/,中间穿插?<name>这样的内容来捕获


24.2.2.断言

24.2.3.dotAll
正则表达式的其他匹配模式。



25.ES10的新特性
25.1.Object.fromEntries
用于创建一个新对象

25.2.Object.entries
将对象转化为二维数组。每个数组里面第一个元素是键,第二个是值。

25.3.清除字符串左右空白
trimStart 和 trimEnd


25.4.Array.prototype.flat 与 flatMap
flat将高维数组展开为低维数组,参数默认为1,即展开一层。

参数为2,展开两层。

flatMap相当于 map 和 flat 的结合,先进行map,再flat 降低数组维度(如果map返回值是一个多维数组)。

25.5.Symbol.prototype.description
获得Symbol的描述字符串。

26.ES11的新特性
26.1.类的私有属性
声明方法,在属性名前加#。
只能由对象内部的方法使用,外部不能引用。

26.2.Promise.allSettled和Promise.all
Promise.allSettled(promises)可以并行地运行 promise,并将状态(fulfilled 或reject)收集到一个聚合数组中。

26.3.String.prototype.matchAll
展开为一个二维数组,


26.4.可选链操作符

26.5.动态import

26.6.大整型
用于大数值的运算。

26.7.globalThis 对象
指向全局对象。
在语言标准的层面,引入globalThis作为顶层对象。也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。




1023

被折叠的 条评论
为什么被折叠?



