类
特点
用class声明 本质是function
constructor 构造
extends 继承
new 实例化
类名建议大写开头
实例
class Cat extends Animal{
constructor(name,color){
super(name);
this.color = color;
}
say(){}
}
var c1 = new Cat('小猫咪','五彩斑斓的黑')
模块化
<script type='module'>
导出
export{name} 导出一个
export{name,fun} 导出多个
export default Cat 导出默认
导入
import {name} from url
import {name,fun} from url
import Cat from url 导入默认
import Cat,{name,fun} from url 合并默认
import * as utils from url 导入所有as关键字
文件打开必须是http开头,不能是D: C:file协议
Set 集合
内容不重复
初始化 :var s1 = new Set([1,2,1,3])
利用set特性去重 :arr = [...new Set(arr)]
常用方法
add 添加
delete 删除
clear 清空
has 检查是否有
size 长度
类似数组
WeakSet 集合
内容不重复
内容必须是引用对象
new WeakSet{[...]}
Map 图
类似对象
特点:键可以是任意类型
初始化:new Map([['wxj',22],['jack',20],['ged',28]])
方法
set 添加
get 获取
has 检测
size 长度
delete 删除
clear 清除
WeakMap
特点:key都是弱引用
可迭代对象
可以被for of遍历
String 字符串
Array 数组
Set 集合
Map 图
keys() 键集合
value() 值集合
enteries() 键与值集合
for(let v of arr){
console.log(v);
}
Promise(承诺)
定义 :返回一个延期的承诺,用then来接受结果
resolve解决(兑现)
reject 拒绝
作用
1. 按顺序执行异步调用
2. 避免回调函数 多层嵌套
race 有一个resolve 就调用 then
all 等所有结果都resolve 才调用then方法
基本写法
new Promise((resolve,reject)=>{
resolve(结果)
reject (原因)
})
.then(
res=>{//获取结果},
err=>{// 捕捉错误})
.catch(err=>{捕捉错误})
race
Promise.race([多个异步调用])
.then(res=>{返回的是最快resolve结果})
all
Promise.all([多个异步调用])
.then(list=>{所有的resolve结果列表})
generator(生成器)
定义:
遇到 yield 会挂起 暂停
执行时候 next() 再次开始执行
通常去做异步请求
function * say(){
yield "1";
yield “2”;
yield "3"
}
var it = say();
it.next() //{value:"1",done:false}
it.next() //{value:"2",done:false}
it.next() //{value:"3",done:true}
it.next() //{value:undefined,done:true
async 异步 await 等待
异步编程
function say(){ return new Promise()}
async function doit(){
await say();
await say():
await say()
}
say()
. then(res=>{return say()})
.then(res=>{return say()})
proxy(代理)
可以对目标对象的读取调用...进行拦截
1. 目标对象
let target = { name:"mumu",age:18};
2. 处理
let handler = {
get(target,key){},
set(target,key,value,receiver){}
}
3. let proxy = new Proxy(target,handler)
处理函数
set
get
has()
ownkeys
apply
...
Reflect(反射)
对 对象进行一些操作,方便 代理处理
常用
Reflect.ownKeys(obj) 获得对象键的列表
Reflect.set(obj,key,value) 设置对象的值
Reflect.get(obj,key) 获取对象的值
Reflect.has(obj,key) 检测是否有某个值