ES6文档:https://es6.ruanyifeng.com/#docs/set-map
-
ES6(2015年公布)
------------
版本变动最多,退出许多语法个性;
兼容性:label 能够把ES6编译成ES5。
ES6 申明变量的六种办法:
-
ES5 只有两种申明变量的办法:var命令和function命令。
-
ES6除了增加let和const命令,前面章节还会提到,
-
另外两种申明变量的办法:import命令和class命令。所以,ES6 一共有6种申明变量的办法。
-
let变量申明
-
const申明常量,值不能批改
-
解构赋值:
解构赋值:ES6容许依照肯定模式从数组和对象中提取值,对变量进行赋值。
-
简化对象写法
-
箭头函数(=>)以及申明
箭头函数有几个应用留神点。
-
函数体内的this对象,就是定义时所在的对象,而不是应用时所在的对象。
-
不能够当作构造函数,不具备prototype原型对象,不能够应用new命令,否则会抛出一个谬误。
-
没有arguments对象,该对象在函数体内不存在。如果要用,能够用 rest 参数代替。
-
不能够应用yield命令,因而箭头函数不能用作 Generator 函数
-
箭头函数都是匿名函数
-
箭头函数三种简化形式
-
this的动态个性:
-
不能作为构造函数 实例化对象:
-
不能应用 arguments 变量:
-
简化实例:
-
箭头函数适宜与this无关的回调,比方:定时器 数组的办法回调
-
箭头函数不适宜与this无关的回调,比方:事件回调、对象的办法
-
容许给函数参数赋默认值
-
rest参数
-
扩大运算符
-
扩大运算符
扩大运算符能将「数组」转换为逗号分隔的「参数序列」;
扩大运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
-
扩大运算符的使用
-
数组的合并:[…数组1, …数组2]
-
数组的克隆:[…数组]
-
将伪数组转为真数组:
-
新数据类型Symbol
ES6引入一个新数据类型Symbol来标识举世无双的值,是一种相似于字符串的数据类型。
Symbol特点:
-
Symbol的值是惟一的,用来解决命名抵触的问题
-
Symbol值不能与其余数据进行运算
-
Symbol定义的对象属性不能应用for…in循环遍历,然而能够应用Reflect.ownKeys来获取对象的所有键名。
-
在for…in迭代中不可枚举,object.getOwnPropertyNames() 不会返回symbol对象的属性,能够通过object.getOwnPropertySymbols() 获取。
-
Symbol创立
-
应用Symbol给对象增加属性或办法
-
Symbol的内置属性
-
数组
-
Map:映射 一对一
-
reduce:汇总 一堆进去一个 算总数,平均数
-
filter:过滤器
-
forEach:循环遍历(迭代)
-
字符串
-
新办法 startsWith endsWith
-
字符串模板 “(反引号)
-
面向对象
-
class类
区别:
-
类不存在变量晋升
-
this 的指向
ES6的面向对象:
1、减少class关键字,结构器和类离开了
2、 class外面间接加办法
-
class类的继承extends,super
super:超类 == 父类
-
面向对象 – 实例
模块化,组件化
JSX == babel ==browser.js
-
JSON
-
JSON对象
-
JSON.stringify():json转字符串
-
JSON.parse(): 字符串转json
-
json的简写,办法简写
-
名字和值(key和value)一样的时候,能够值保留一个。
-
对象的简写
-
promise
https://mp.weixin.qq.com/s?__…
特点:
-
promise的状态一经扭转就不能再更改,不容许返回。
-
promise.all 全副胜利才调用胜利办法,有一个没胜利就调用失败办法
-
promise.race 比赛,所有实例里第一个返回的状态,是胜利就走胜利
-
promise.any 有一个胜利就胜利,全副失败才失败
-
promise.allSettled 包装一组实例,记录所有状态返回。
-
finally 所有状态都会走
-
实现retry https://blog.csdn.net/qq_40420294/article/details/101920789
-
异步:操作之间没什么关系,能够同时进行多个操作 毛病 代码更简单
-
同步:操作间接是相干的 同时只能做一件事 代码更简略
-
ajax申请 异步
长处:
-
Promise 是异步编程的一种解决方案,比传统的异步解决方案【回调函数】和【事件】更正当、更弱小。
-
promise 打消异步操作 用同步一样的形式来书写异步
-
.then能够链式调用,解决回调天堂的问题,解决异步的问题,new了
毛病:
-
不不便调用、一旦执行无奈进行,状态扭转后无奈扭转。
-
不容易定位错误信息
-
Promise.then()根本应用:
-
Promise.all():解析多个申请
全副胜利才调用胜利办法,有一个没胜利就调用失败办法
-
Promise.race():解析多个申请
比赛,所有实例里第一个返回的状态,是胜利就走胜利
-
generator
-
generator是一个一般函数,两个特色:function和函数名之间有*,外部应用yield表达式。
-
generator函数和一般函数的区别:generator函数中途能够进行
-
yield:临时放弃执行
-
next()
-
Proxy 拦挡,代理器(vue3原理)
数组的key是他自身
重载(overload):用本人的定义笼罩了语言的原始定义
所要代理指标对象 , 配置对象
Proxy实例的办法:
-
get():指标对象 拦截器 proxy自身
-
set 指标对象 属性名 属性值 实例自身
-
apply 指标对象 指标对象上下文 数组
-
has 指标对象 属性名
-
construst 拦挡构造函数
-
迭代器(Iterator):自定义遍历数据
-
任何数据只有部署Iterator接口,就能够实现遍历操作,次要供for…of生产。
-
Set
-
WeakSet
WeakSet 中的对象都是弱援用,即垃圾回收机制不思考 WeakSet 对该对象的援用,也就是说,如果其余对象都不再援用该对象,那么垃圾回收机制会主动回收该对象所占用的内存,不思考该对象还存在于 WeakSet 之中。
-
Map
ES6提供了Map数据结构,它相似于对象,也是键值对的汇合。然而“键”的范畴不限于字符串,各种类型的值(包含对象)都能够当做键。Map也实现了iterator接口,所以能够应用[扩大运算符]和[for … of…]进行遍历。
Map的属性和办法:
-
size 返回Map的元素个数
-
set 减少一个新元素,返回以后Map
-
get 返回键名对象的键值
-
has 检测Map中是否蕴含某个元素,返回boolean值
-
clear 清空集合,返回undefined
-
ES7(2016年公布)
------------
-
ES8(2017年公布)
------------
-
async await
https://www.zhihu.com/question/39571954
-
概念:async函数就是generator函数的语法糖。async函数,就是将generator函数的*换成async,将yield替换成await。
-
异步编程的终极解决方案。
-
await前面的是同步工作,await上面的是微工作 ,.then是微工作
-
函数执行时,一旦遇到await就会返回。等到触发的异步操作实现(并且调用栈清空),再接着执行函数体内前面的语句。
-
async/await是基于Promise实现的,async函数的返回值是promise对象
-
promise对象的后果由async函数执行的返回值决定。
长处:
-
async和await两种语法联合能够让异步代码像同步代码一样
-
解决链式调用,不须要像Promise一样始终.then,不须要写匿名函数解决Promise的resolve值,也不须要定义多余的data变量,还防止了嵌套代码。
毛病:
-
可能导致性能问题,因为await会阻塞代码
-
async await和promis的区别:
相同点:都是优化异步编程体验的解决方案;
不同点:
-
promise是应用层的解决方案,它有一个标准,不同的语言也能够实现,它只能异步的处理错误,在js里实质是一个对象
-
async/await是语言层的解决方案,能够让用户像编写同步代码一样,通过try/catch能够同步地处理错误。
-
promise解决回调天堂的问题,async/await返回的是一个promise对象,解决promise里不停.then的问题
-
ES9(2018年公布)
------------
-
ES10(2019年公布)
-------------
-
ES11(2020年公布)
-------------
发表回复