# WeakMap
WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的(其主要主要空能和之前的Map基本上一项,只是所有的key必须是对象,数组,或者function)
# 基本用法
// 声明
var weakMap = new WeakMap();
var keyObj = {};
var keyFunc = function(){};
var keyStr = 'uncle-yang';
//set
weakMap.set(keyObj, 'key object');
weakMap.set(keyFunc, 'key function');
weakMap.set(keyStr, 'key string'); // 报错: Invalid value used as weak map key
// 判断map中,是否有值
console.log(weakMap.has(keyObj)); // true
console.log(weakMap.has({})); // false
// 获取值
console.log(weakMap.get(keyObj)); // 'key object'
console.log(weakMap.get(keyFunc)); // 'key function'
console.log(weakMap.get({})); // undefined, 这里是个新的对象,和keyObj是两个不同的对象,在内存中有着不同的空间
console.log(weakMap.get(function(){})); // undefined, 原因同上
//删除
weakMap.delete(keyObj);
weakMap.delete(keyFunc);
console.log(weakMap.has(keyObj)); // false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30