1.Symbol() 类型 : 表示独一无二的值 .
作用:解决命名冲突
设置格式: Symbol(' 值 ')
Symbol特点:
Symbol中的值都是唯一的,即使相同也不相等
Symbol可以转换为字符串与布尔值, 不可以转换为数值
内置属性description,可以查看内容
声明方式有两种 : Symbol(值) 和 Symbol.for(值)
Symbol声明与Symbol.for声明有什区别?
symbol声明的值,相同也不相等
Symbol.for声明的值,相同既相等
2.数据结构 set 与 map
生成Set new Set()
增加 对象.add()
查看是否有对应值 对象.has()
清空 对象.clear()
长度 对象.size
set最大的特点: 值不可以重复
set和map的介绍:
set和map都是es6新增的数据结构。其中set是一个类数组结构,值是唯一的,没有重复的 值。map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值 (包 括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构 提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构, Map 比 Object 更合适。
set集合特点
1. 内容不可以重复
2. 写入集合中的数据不会自动转换类型
3. 在set中相同的对象不相等
4. 在set NaN是相等的
如何用es6方式为数组去重?
1. 把数组转为set格式,实现了去重
2. 把去得后的set格式,通过Array.from的方式转为数组
代码如下:
let arr1 = [1,2,3,1,2,3];
let myset = new Set(arr1);let myarr = Array.from(myset);
console.log(myarr);
weakset与set的区别
特点:
1. weakset的值必需为对象!!!!
2. weakset操作方法较少
3. weakset不可以遍历
map类似于对象
1.生成 new map()
2.创建值 对象.set('键','值');
3.读取值 对象.get('键');
4.清空 对象.clear();
5.删除 对象.delete('键')
6.长度 对象.size
WeakMap()特点:
下标(属性):必需为对象
let myweak = new WeakMap();
myweak.set(window,'王五');
myweak.set({name:'赵六'},'aaaa');
console.log('weak',myweak);