ES6语法
2018-09-01 21:10:44 47 举报
AI智能生成
ES6语法
作者其他创作
大纲/内容
ES6语法
Map
操作
增:add
查:has
改:forEach
删:forEach和delete
概念
Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现
类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
Proxy和Reflect
两者的方法一样
方法
get
set
deleteProperty
has
使用场景
可以用作数据校验
注意
代理对象之后,不能用[]取对象的属性,只能用\".\"来取
类
关键字:class
构造函数:constructor
继承
关键字:extends
super 表示父类的构造函数,且super的调用一定要放在子类构造函数的首句
getter
setter
静态方法:static
静态属性:直接在类上面定义即可
Promise
传统异步解决方案
回调
事件触发
概念:是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大
高级用法
Promise.all:所有请求都完成才做then操作
Promise.race:只要有一个请求返回就执行then操作
Iterator
基本概念
是一种接口,为各种不同的数据结构提供统一的访问机制
任何数据结构只要部署 Iterator 接口,就可以完成遍历操作
供for...of消费,用于遍历数据结构
可以按照需求部署Iterator接口,只要符合接口要求即可
注意:对象本身是没有部署Iterator接口的
Generator
基本概念:一种异步编程的解决方案
场景
异步编程
生成Iterator
状态机
语法糖
asyn、await
实例
不需要把变量定义成全局变量
长轮询
理解
形式上
function关键字与函数名之间有一个星号
函数体内部使用yield表达式,定义不同的内部状态
调用 Generator 函数,返回一个遍历器对象,代表 Generator 函数的内部指针,必须调用遍历器对象的next方法,使得指针移向下一个状态
语法上
一个状态机,封装了多个内部状态
Decorator
函数
修改行为
修改类的行为
参数
target:要修饰的类
name:是所要修饰的属性名
descriptor:该属性的描述对象
用法
关键字@
可以用在类里面
也可以用在类上面
可以直接修饰类里面属性
第三方库:core-decorator
埋点
Module模块化
import
一一对应
* as
export
一个一个导出
default
自动启用严格模式
严格模式下:如果引用没有声明的变量,会报错为 is not defined
let和const
let 定义的变量可以有块作用域
const定义的变量无法修改,但是const定义的对象可以修改对象的属性,也可新增删除属性
let const 不能重复声明相同的变量
解构赋值
数组解构赋值
交换两个变量的值
函数返回多个值
变量给默认值
可以给变量赋制定的值
当不确定返回值为几个的时候可以用一个值来接收
定义:按照顺序赋值,没有配置上的变量值为undefined
对象解构赋值
可以给默认值
与数组结构混合使用
定义:按照属性赋值,没有配置上的变量为undefined
含义:等号两边的解构形同
正则
构造函数
ES5:可以是一个参数,也可以是两个参数,一个参数时时一个正则表达式,两个参数时第一个是字符串,后一个是模式
ES6:当两个参数的时候,如果第一个是正则表达式,第二个参数可以是修饰符,并覆盖第一个参数中的修饰符
修饰符
i:大小写不敏感
g:全局匹配(查找所有匹配而非在找到第一个匹配后停止)
y:全局匹配(查找所有匹配而非在找到第一个匹配后停止),但是要从第一个字符算起
u:用来正确处理大于\\uFFFF的 Unicode 字符
test:检索字符串中指定的值,存在返回true,不存在返回false
exec:检索字符串中指定的值,存在则返回找到值,不存在返回null
compile:改变正则的检索模式
属性
global:表示正则表达式是否有修饰符g
ignoreCase:表示正则表达式是否有修饰符i
sticky:表示正则表达式是否有修饰符y
flags:表示正则表达式的修饰符
lastIndex:一个整数,标示开始下一次匹配的字符位置
字符串
字符的Unicode的表示
includes:是否包含指定字符,且是区分大小写的
startsWith:是否以指定字符开始
endsWith:是否以指定字符结束
repeat:方法返回一个新字符串,表示将原字符串重复n次
String.raw:返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串
模板字符串
特殊字符``来包裹
嵌入变量使用${}
标签模板
标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。
数值
进制
二进制:0b111
八进制:0O767
十六进制:0xf
Number方法
Number.isFinite():用来检查一个数值是否为有限的(finite),即不是Infinity;如果参数类型不是数值,Number.isFinite一律返回false
Number.isNaN():用来检查一个值是否为NaN;如果参数类型不是NaN,Number.isNaN一律返回false
Number.isInteger():用来判断一个数值是否为整数;如果参数不是数值,Number.isInteger返回false
JS能够准确表示的数字
定义:JavaScript 能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值
最大值2^53:MAX_SAFE_INTEGER
最大值-2^53:MAX_SAFE_INTEGER
Number.isSafeInteger():则是用来判断一个整数是否落在这个范围之内;如果参数不是数值,Number.isSafeInteger返回false
Math方法
Math.trunc:方法用于去除一个数的小数部分,返回整数部分;对于非数值,Math.trunc内部使用Number方法将其先转为数值;对于空值和无法截取整数的值,返回NaN
Math.sign
用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值;如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回NaN
返回值
参数为正数,返回+1
参数为负数,返回-1
参数为 0,返回0
参数为-0,返回-0
其他值,返回NaN
Math.cbrt方法用于计算一个数的立方根;对于非数值,Math.cbrt方法内部也是先使用Number方法将其转为数值
数组
遍历
用于遍历数组,都返回一个遍历器对象
keys()是对键名的遍历
values()是对键值的遍历
entries()是对键值对的遍历
查找
find:用于找出第一个符合条件的数组成员,直到则返回该成员,找不到返回undefined
findIndex:
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
支持NaN,弥补indexOf的不足
includes:返回一个布尔值,表示某个数组是否包含给定的值
Array.of:方法用于将一组值,转换为数组
Array.from
还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组
方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象
fill
使用给定值,填充一个数组
还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置,在结束位置之前结束
copyWithin:在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。
箭头函数 =>
支持默认值,后一个参数可以以前一个参数的值作为默认,带默认的参数只能放在最后一个
rest 参数(形式为...变量名)
用于获取函数的多余参数,这样就不需要使用arguments对象了
rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中
只能是最后一个参数
可以把数组拆成一个一个的值
对象
简洁表示
属性可以是变量,变量用[]来包裹
Object.is():比较两个值是否相等
Object.assign
用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
第一个参数是目标对象,后面的参数都是源对象
浅拷贝
Object.entries():返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组
Symbol
一种新的原始数据类型,表示独一无二的值
Symbol()
每一次都是一个新的
Symbol.for()
不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值
Symbol.keyFor
方法返回一个已登记的 Symbol 类型值的key
Symbol()没有登记机制返回的是undefined
做属性名的Symbol
Symbol类型的属性名Object.entries无法取出
Object.getOwnPropertySymbols只能取出Symbol类型的属性
Reflect.ownKeys方法可以返回所有类型的键名,包括常规键名和 Symbol 键名
Set
增:set
改:set
删:delete
类似于数组,但是成员的值都是唯一的,没有重复的值
0 条评论
回复 删除
下一页