Map
Map:类对象结构,也是键值对的集合,但是键的范围不限于字符串,各种类型的值(包括“对象”)都可以作为键。const m=new Map()`
const obj={};
const s1=Symbol('s');
const s2=Symbol('s');
const key1={single:1};
const key2={single:2};
obj[s1]='s1';
obj[s2]='s2';
obj[key1]='key1';
obj[key2]='key2';//把key1覆盖了
console.log(obj[s1]);//s1
console.log(obj[key1]);//key2
console.log(obj)//[object Object]: "key2",Symbol(s): "s1",Symbol(s): "s2"
console.log(obj.toString())//[object Object]
//对象不能作为键(除非map),能做键的只有字符串和数字;对象做键都会自动转成[object Object]
属性:constructer、size
方法:set()、get()、delete()、has()、clear()(返回undefined)、keys()、values()、entries()、forEach()
Map也实现了iterator接口,所以可以使用扩展运算符和for…of…进行遍历。
Set
Set:类数组结构,但是成员值没有重复的。const s=new Set(arr)
属性:constructor size
方法:add(value)、delete(value)、has(value)、clear()清除所有成员、keys()、values()、entries()、forEach()