目录
类的特点
1.用class声明本质是function
2.constrctor 构造
3.extends 继承
4.new 实例化
5.类名建议大写开头
class Animal{
constructor(name){
this.name = name;
}
yiel(){
console.log("我开始咆哮!");
}
}
var an = new Animal("野兽");
结果
模块化
<script type="module">
导出
1.export{name} 导出一个
2.export{name,fun} 导出多个
3.export default Cat 导出默认
导入
1.import {name} from url 导入一个
2.import {name,fun} from url 导入多个
3.导入默认 import Cat from ur
4.合并默认 import Cat,{name,fun}from ur
5.导入所有 as关键字 import * as utils from ur
注意:文件必须打开必须是http协议,不能是D:C:file协议
Set集合
1.内容不能重复
2.初始化 var s1=new Set([1,2,1])
3.利用Set特性去重 arr=[...new Set(arr)]
var arr=[1,2,2,2,2,4,4,5,5,6,9];
arr = [...new Set(arr)]
console.log(arr);//结果为[1,2,4,5,6,9]
4.常用方法
add 添加
delete 删除
clear 清空
has 检查是否有
size 长度
5.类似于数组
WeakSet 集合
1.内容不重复
2.内容必须是引用
3.new WeakSet([...])
Map图
1. 类似于对象
2.特点:键可以使任意类型
3. 初始化 new Map ([["gzg",18],["mumu",18]])
4.方法
get 获取
set 添加
has 检测
size 长度
delete 删除
clear 清空
WeakMap
特点:key都是弱引用
可迭代对象
1.可以被for of遍历
2.String 字符串
Map 图
Array 数组
Set 集合
3.keys()键的集合
values()值得集合
enteries()键与值的集合
4.for of
for (let v of arr ){
console.log(v);
}
Promise
定义
1.执行异步任务
2.避免回调地狱
创建
var p=new Promise((resolve,reject)=>{
Math.random()>0.?resolve("请你吃肯德基"):reject("明天在说")
})
实列
//.then方法等待 任凭p里面的resolve执行
p.then(res=>console.log(res))
// .catch方法 等待 任凭p里面的reject方法执行
.catch(err=>console.log(err))
其他
//.all
Promise.all([..])
.then()
// 等待异步列表中全部resolve执行//.rase
Promise.race([...])
.then()
异步列表中最resolve的值
异步与等待
async
async 是“异步”的简写,带async关键字的函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回的不是promise,会自动用Promise.resolve()包装。
async function say(){
return "你好ES6"
}
say()
.then(res=>console.log(res))
//输出结果为你好ES6
await
await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
Symbol
1.符号;不重复;不能修改
var sym = Symbol("标识")
可以使Sym作为唯一的key或者标识符 {sym:”abc“}
迭代器
1.可迭代对象都拥有迭代器(可以被for of 遍历对象都是迭代对象) String Array Set Map
2.获取迭代对象 var ite = arr[Symbol.iterator]()
3.通过next方法进行迭代 itr.next()
生成器
1.普通函数前面添加*
通过关键字yied关键字来控制生成
最终函数执行返回一个可迭代元素
2.function *range(start,end,step){
while(start<step){
yield start;
start+=step;
}
}
3.生成一个1-100的可迭代元素
var list=range(1,100)
转换为数组
list=[...list]
4.当函数执行到yield关键字会等待
代理proxy
对象操作的劫持
obj={msg:"你好"}
var o = new Proxy(obj,{
get (target,prop){
return targe[prop]
}
set(target,prop,value){
targe[prop]=value
}
})
o.msg 会执行get方法
o.msg="abc"会执行set方法
我们可以在get和set方法里面做一些判断劫持等其他操作
console.log(o.msg)