ES6

138 阅读2分钟

babel

将ES6代码转换为babel转换为ES5代码

Symbol

使用了symbol,表示独一无二

最大的用处:用来对象的私有变量

 let s1 = Symbol("s1"); let obj = {}; objp[s1] = '大亦'; console.log(obj[s1])//大亦

如果用symbol定义的对象中的变量,取值时一定用[s1]

for循环无法遍历

 for(let key in obj){   
console.log(key) 
}//undefined

set集合

表示无重复值的有序列表

let set = new Set();

和obj对比

区别:

  • obj是key唯一,值不唯一;而set是仅有值,值唯一

元素的方法

  • 添加元素set.add()

  • 删除元素set.delete()

  • 检查元素set.has()

  • set长度set.size

  • 将set转换为数组

     let set = new Set([1,1,2,2,3,3,4,4])//1,2,3,4 
    let arr = [...set] console.log(arr)//1,2,3,4
    

map

map类型是键值对的有序列表,键和值是任意类型,且11对应

元素方法

  • 添加元素map.set("key","value")

  • 删除元素set.delete("key")

  • 检查元素set.has("key")

from方法

 function toArr(){   var newArr = Array.from(arguments)   console.log(newArr)//[1,2,3,4] } toArr(1,2,3,4)

of方法

 Array.of(3,1,2,55,"55")//[3,1,2,55,"55"]

includes

返回一个布尔值

 console.log([1,2,3,4].includes(5))//false

迭代器 Iterator

一种新的遍历机制

核心:

  • 迭代器是一个接口,能快捷的访问数据,通过symbol.iterator来创建

  • 迭代器是用于遍历数据结构的指针

    const items = ["one","two","three"]; const ite =itemsSymbol.iterator; console.log(ite.next())//value:"one",done:false

generator

是什么

generator函数,可以通过tield关键字,将函数挂起,为改变执行流提供了可能,同时为了做异步操作提供了方案

和普通函数的区别

  • function后面 函数名之前有个*

  • 只能在函数内部使用yield表带试,将函数挂起

例子

 function* func(){   
yield 2;   
yield:3 
} 
let fn = func(); 
console.log(fn.next())// 2,done:false

第一次调用yield方法时,要么遇到return时,要么遇到undefined的时候,停止运行

总结

generator函数是分段执行,yield语句是暂停执行,而next是继续执行

 function* add(){   
    console.log("start");   
    let x = yield"2";  
    console.log('one' + x);  
    let y = yield '3';   
    console.log('two' + y);   
    return x + y; 
} 
const fn = add(); 
console.log(fn.next());//{value:'2',done:flase} 
//在下面这次调用中将20赋值给了整个的yield '2' 
console.log(fn.next(20));//{value:'3'.done:false} 
//下面这次调用中将30赋值给了整个的 yield'3‘ 
console.log(fn.next(30))//{value:50,done:true} 
//最后打印的x+y 得到的结果是50

使用场景

为不具备interator接口的对象提供了遍历操作