es6又称es2015,这个是es中的一个大版本的改变,因此相较于es5来说有了许多的变化。而后续的es6以上的版本通常是以年份来叫如es2015(es6)、es2016(es7)、es2017…
es6的具体新增内容可以参考阮一峰老师的:ECMAScript 6 入门
es6常用内容整理
1.新增块级作用域以及let、const常量变量命名
2.解构赋值
解构赋值即指将一种数据结构拆分为更小的内容单位,然后将其赋值给另一个结构类似的变量的过程,解构赋值可以用于许多的地方:数组、对象、字符串、数值、布尔值、函数参数等,不同的数据格式赋值的规则会有细微的差距
3.字符串、正则、数值、函数、数组、对象都有新的内容及方法的拓展
常用的拓展
------ 字符串
- 模板字符串(用反引号包裹,可放置变量${}等)
- 新增字符串方法(includes()、startsWith()、endsWith()、endsWith()、padStart()、padEnd()、trimStart()、trimEnd())
------ 正则
- u/y修饰符
- 新增一些相关属性和方法
------ 数值
- Number对象新增属性和方法方法(EPSILON、isFinite()、isNaN()、isInteger()、isSafeInteger())
- Math对象的一些方法拓展
- 指数运算符
------ 函数
- 函数参数可以指定默认值
- 函数的name属性,返回该函数的函数名
- 箭头函数(最明显的作用就是不改变this的指向)
------ 数组
- 拓展运算符
- 新增静态方法(from()、of())
- 新增实例方法(copyWithin()、find()、findIndex()、fill()、entries(),keys()、values()、includes()、flat()、flatMap()、)
------ 对象
- 属性的简介表示发以及属性名表达式
- 方法含有name属性
- 新增对象遍历的方法
- super 关键字的使用
- 链判断运算符
- Null 判断运算符
- 新增方法(is()、assign()、fromEntries()、entries()、values()、keys()、setPrototypeOf()、getPrototypeOf())
4.新的原始数据类型Symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。目的是为了防止属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。
5.Set 和 Map 数据结构
可以看作类数组或者是类对象、Set 和 数组的区别是里面的内容唯一、Map和对象的区别在于键名是可以随意拓展
6.Proxy 代理器对象
ES6 为了操作对象而提供的新 API
在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因而可以对外界的访问进行过滤和改写。
7.Reflect
ES6 为了操作对象而提供的新 API
Reflect对象的设计目的有这样几个。
- (1)将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从Reflect对象上可以拿到语言内部的方法。
- (2) 修改某些Object方法的返回结果,让其变得更合理。比如,Object.defineProperty(obj, name, desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj, name, desc)则会返回false。
- (3) 让Object操作都变成函数行为。某些Object操作是命令式,比如name in obj和delete obj[name],而Reflect.has(obj, name)和Reflect.deleteProperty(obj, name)让它们变成了函数行为。
- (4)Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法。这就让Proxy对象可以方便地调用对应的Reflect方法,完成默认行为,作为修改行为的基础。也就是说,不管Proxy怎么修改默认行为,你总可以在Reflect上获取默认行为。
8. Promise对象、async函数、Generator 函数
这三种都是ES6 提供的异步编程解决方案,基本使用方式参考:
https://blog.csdn.net/lxy869718069/article/details/106680462
9. class类的概念与继承的概念
10. module的语法以及实现
import 、export 、export default 这几种模块化的导出与导入的引入,以及import()方法的使用