乐趣区

关于前端:那些让很多程序员看了都头疼的ES6知识点

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"
退出移动版