ES6
2020-10-22 16:10:07 0 举报
AI智能生成
ES6学习笔记
作者其他创作
大纲/内容
1、ECMAScript6教程
1.1、导言简介
简介
ES 背景
ES 历史
目标与愿景
1.2、环境搭建
webpack
入口
出口
loader
插件
搭建
gulp
如何使用
搭建
2、声明与表达式
2.1、let和const
let
基本用法
代码块内有效
不能重复声明
迭代循环使用
不存在变量提升
const
基本用法
暂时性死区
注意要点
2.2、解构赋值
let {a: aa = 1, b: bb = 2} = {a: 'a', b: 'b'} // aa = 'a'; bb = 'b'
可解构数组、对象、字符串
2.3、Symbol
使用场景
作为属性值
定义常量
原始数据类型Symbol,表示独一无二的值
不能使用 new 命令,可以接受一个字符串作为参数
作为对象属性名是不能使用 "."
作为对象属性名时是公有属性,可以再类外访问,但不会出现再 for...in、for...of中,也不会被Object.keys()、Object.getOwnPropertyNames()返回,可以使用Object.OwnPropertyWymbols()、Reflect.ownKeys()去到
Symbol.for()
Symbol('1') === Symbol.for('1') // false
Symbol.for('1') === Symbol.for('1') // true
Symbol.keyFor()
返回已登记的Symbol类型值的key
3、内置对象
3.1、新增
3.1.1、Map与Set
Map
Map和Object的区别
Map属性的个数可以使用size取得
Map的键值遵循 FIFO 原则
Map的键值可以为任意值
Object有自己的原型,原型链上的键名可能和自定义的有冲突
存取
Map.set(key, value)
Map.get(key)
迭代
for...of
(var [key, value] of myMap)
forEach
myMap.forEach(function(key, value))
Map与Array(二维键值对数组)的转换
new Map(kvArray)
Array.from(myMap)
克隆
var myMap2 = new Map(myMap) // 两者不相等
合并
[...myMap1, ...myMap2] // 重复键值则后面覆盖前面
Set
Set对象允许存储任意类型的唯一值,无论是原始值或对象引用
类型转换
var arr = [...mySet]
var mySet = new Set(arr)
3.1.2、Proxy与Reflect
Proxy和Reflect一一对应
使用场景拓展,观察者模式
3.2、扩展
3.2.1、字符串
扩展方法
识别
includes()
startsWith()
endsWith()
重复
reoeat()
'hello'.repeat(2) -> 'hellohello'
补全
padStart
padEnd
3.2.2、数值
3.2.3、对象
可以用表达式作为属性名,必须放在方括号里(属性名表达式)
属性名表达式和简洁表示法不能一块用
拓展运算符
{...null, ...undefined} 不会报错
新方法
Object.assign(target, source)
浅拷贝
Object.is(val1, val2)
判断是否严格相等
3.2.4、数组
Array.of()
Array.of(1, 2, 3, 4) -> [1, 2, 3, 4]
Array.from()
4、运算符与语句
4.1、函数
4.2、迭代器
iterator
for...of
WeakMaps、WeakSets不可迭代
4.3、class类
decorator
封装与继承
4.4、模块
5、异步编程
5.1、Promise对象
5.2、Generator函数
实现 Iterator,为不具备Iterator接口的对象提供遍历方法
5.3、async函数
0 条评论
下一页