Map、Set、weakMap、weakSet 使用方式

Map,键唯一的 键值对数组,任何值(对象或者原始值) 都可以作为一个键或一个值。键是强引用存储
常用方法:set 、get 、has 、remove 、clear 、size
使用 forEach 去访问 Set 集合元素,forEach 返回的三个值分别是 value , key , Map 集合本身


	let arr = new Map([ [ '我是键', '我是值' ] ]);		// 初始化 Map 及加入一个键值对
	arr.set( [ '小左', '程序员' ] );						// 加入一个键值对
	arr.get( '小左' )									// 获得 key '小左' 的 value 值 '程序员'
	arr.has( '小左' )									// true
	arr.size											// 长度为 2
	arr.remove( '小左' )									// 删除 '小左' 的键值对
	arr.clear()											// 清空所有键值对



Set,唯一值数组,任何值(对象或者原始值) 都可以作为一个值。值是强引用存储
常用方法:add 、has 、delete 、clear 、size
使用 forEach 去访问 Set 集合元素,forEach 返回的三个值分别是 value , value , Set 集合本身


	let arr = new Set([ '我是值' ]);					// 初始化 Set 及加入一个值
	arr.add( '小左' );								// 加入一个值
	arr.has( '小左' )								// true
	arr.size										// 长度为 2
	arr.delete('小左')								// 删除与 '小左' 这个值相等的元素
	arr.clear()										// 清空所有值



WeakSet,唯一值的 对象弱引用数组,它只存储 对象 的 弱引用 ,并且不可以存储原始值;集合中对象的弱引用如果是对象唯一的引用 ( 对象的其他强引用都被清除时,已经不存在其他强引用 ) ,则该值会被回收并释放相应内存。
可用方法:add 、has 、delete,只支持传入对象,非对象参数 add 会报错,has 与 delete 会返回 false
WeakSet 集合不可迭代,不暴露任何迭代器 ( 如 keys()、values() 方法 ) 。所以不能用于 for / of 循环,无法通过程序本身来检测其中的内容。不支持 forEach() 方法,不支持 size 属性;


	let arr = new WeakSet();			// 初始化 WeakSet
	let key = {}
	arr.add( key );						// 加入对象 key 的弱引用
	arr.has( key )						// true
	arr.delete( key )					// 删除数组里的 key 对象
	
	arr.add( key );						// 重新加入对象 key 的引用
	key = null;							// 移除对象 key 的最后一个强引用 
	arr.has( key )						// false ( WeakSet 中的引用也自动移除 )



WeakMap,唯一键的 对象弱引用数组,只支持对象类型的键名 ,集合中保存的键是这些对象的弱引用,如果键的弱引用是对象唯一的引用 ( 对象的其他强引用都被清除时,已经不存在其他强引用 ) ,则该键值对会被回收并释放相应内存。
可用方法:set 、get 、has、delete,键名只支持传入对象,非对象参数 set 会报错,has 与 delete 会返回 false
WeakSet 集合不可迭代,特性与 WeakSet 一样。


	let arr = new WeakMap();			// 初始化 WeakMap
	let key = {}
	arr.set( key , '小左' );				// 加入键名为 对象key的弱引用 的 键值对
	arr.has( key )						// true
	arr.get( key )						// 小左
	arr.delete( key )					// 删除数组里的 key 对象
	
	arr.set( key , '小左' );				// 重新加入键名为 对象key的弱引用 的 键值对
	key = null;							// 移除对象 key 的最后一个强引用 
	arr.has( key )						// false ( WeakSet 中的引用也自动移除 )



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值