1.let 和 const
2.Symbol
新增加的数据类型,表示独一无二的值。
3.变量的解构赋值
4.Set 和 Map
-
Set
和数组类似,但值不允许重复,且本质上是一个构造函数。
1.属性
Set.prototype.constructor
Set.prototype.size:返回Set实例的成员总数
2.方法
Set.prototype.add(value):添加某个值,返回Set结构本身
.delete(value):删除某个值,返回布尔表示删除是否成功
.has(value):返回布尔表示该值是否为Set成员
.clear():清除所有成员
4.遍历Set的方法
Set.prototype.keys():返回键名的遍历器
.values():返回键值
.entries():返回键值对
.forEach():使用回调函数遍历每个成员
-
Map
和对象类似,提供了键值对的集合,但键可以是任意类型。
Map结构还提供了"值-值"的对应,是一种更完善的Hash结构的实现。
1.属性
Map.prototype.constructor
Map.prototype.size:返回Set实例的成员总数
2.方法
Map.prototype.set(key,value):添加键值对,返回Map结构本身。
Map.prototype.get(key):通过键获取值,找不到返回undefined。
Map.prototype.delete(key):删除某个键,返回true。
Map.prototype.has(key):返回一个布尔值,表示某个键是否在当前Map对象中。
Map.prototype.clear():清除所有成员,无返回值。
3.遍历方法
Map.prototype.keys():返回键名的遍历器
Map.prototype.values():返回键值的遍历器
Map.prototype.entries():返回所有成员
Map.prototype.forEach():遍历Map的所有成员
5.循环遍历
1.Iterator
为各种数据结构提供统一的访问接口
以下数据结构原生具备该接口:
Array
Map
Set
String
TypedArray
函数的arguments对象
NodeList对象
手写Iterator函数:
function makeIterator(array){
let nextNum = 0;
return {
next:function(){
return nextNum < array.length ? {value:array[nextNum ++], done:false} : {value:undefined, done:true};
}
}
}
调用Iterator的场合:
1.解构赋值
2.扩展运算符
3.yield*
4.数组遍历
注意:
2.for...of
1.JavaScript原有的for...in循环只能获取对象的键名,ES6提供for...of循环,允许遍历获取键值。
2.数组的遍历器接口只返回具有数字索引的属性。
6.字符串扩展
扩展运算符是三个点(...)
1.将一个数组转为逗号分隔的参数序列
2.可以用于函数调用
扩展运算符的应用:
1.代替apply方法
2.复制数组(对象)
3.合并数组(对象属性)
4.轻松将字符串转换为数组
7.数值扩展
Array.from()用于两类对象转为真正的数组(浅拷贝实例)
console.log(Array.from('foo'))
output:Array('f','0','0')
console.log(Array.from([1, 2, 3], x => x + x)
output:Array(2, 4, 6)
Array.of():用于将一组值,转换为数组。
Array.of(1, 2, 3)
output:Array(1, 2, 3);
Array.copyWithin(target, start, end):在当前数组内部,将指定位置的成员浅复制到其他位置(会覆盖原有成员),然后返回当前数组。
find():用于找出第一个符合条件的数组成员,参数是一个回调函数
注意find函数和filter函数的区别:
1.find函数直接返回值,filter函数返回数组结构
fill():使用给定值填充一个数组
8.函数扩展
箭头函数
1.函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
2.不可以当做构造函数
3.不可以使用arguments对象,如果要用,可以使用rest参数代替。
4.箭头函数可以嵌套