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接口的对象提供了遍历操作