part 0 异步与期待(async和await)
1. async
async function say(){return "abc"}say().then(res=>{})
async装璜的函数返回的是一个promise对象
2. await
await只能在async函数外面应用
当函数遇到await 期待await后果,再往下执行
async function doit(){var m1 = await say("msg",1000)var m2 = await say("msg2",2000)return m1+m2;}doit().then(res=>console.log(res))
part 1 Symbol
符号;不反复;不可批改
var sym = Symbol("标识")
能够是sym作为惟一的key 或者标识符
{sym:"abc"}
part 2 迭代器
可迭代对象都领有迭代器(能够被for of遍历对象都是可迭代对象),包含String Array Set Map等。
获取迭代对象
var itr = arr[Symbol.iterator]()
通过next办法进行迭代
itr.next(){value:"xxx",done:false}.....{value:undefined,done:true}
part 3 生成器
一般函数后面增加 *
通过yield要害来管制生成
最终函数执行 返回一个可迭代元素
function *range(start,end,step=1){while(start<step){yield start;start+=step; }}
生成一个1-100的可迭代元素
var list = range(1,100);
转换为数组
list = [...list]
当函数执行到yield关键字会期待
part 4 代理prxoy
对原对象操作的劫持
obj = {msg:"你好vue"}var o = new Proxy(obj,{get(target,prop){ return target[prop]},set(target,prop,value){ target[prop] = value}})
o.msg 会执行get办法
o.msg=“abc” 会执行set办法
咱们能够在get和set办法外面做一些判断劫持等其余操作
console.log(o.msg)
获取o的msg值 执行o代理外面的get办法
return obj["msg"]o.msg = "abc"
设置o的msg值 执行o代理的set办法
obj["msg"] = "abc"