|
| 1 | +WeakMap : Object |
| 2 | + |
| 3 | +WeakMaps allow associating keys and values similar to %%/Map|Map%% |
| 4 | +except WeakMap does not allow iterating over its keys or values. |
| 5 | +If WeakMap would be the only object holding on to the key/value |
| 6 | +pair, the pair will be released from memory. |
| 7 | +The keys cannot be primitive values |
| 8 | +(%%/Boolean|Boolean%%, |
| 9 | +%%/Number|Number%%, |
| 10 | +%%/String|String%%, |
| 11 | +or |
| 12 | +%%/undefined|undefined%%). |
| 13 | + |
| 14 | +Version: |
| 15 | +ECMAScript 6 |
| 16 | + |
| 17 | +---- |
| 18 | +new WeakMap() : WeakMap |
| 19 | + |
| 20 | +Creates an empty WeakMap. |
| 21 | + |
| 22 | +<example> |
| 23 | +var key1 = { foo: 1 }; |
| 24 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 25 | + |
| 26 | +var x = new WeakMap([[key1, 'value 1'], [key2, 'value 2']]); |
| 27 | + |
| 28 | +console.log(x.get(key1)); |
| 29 | +console.log(x.get(key2)); |
| 30 | +</example> |
| 31 | + |
| 32 | +---- |
| 33 | +new WeakMap(iterable : Object) : WeakMap |
| 34 | + |
| 35 | +Creates a WeakMap by iterating over **iterable** and using |
| 36 | +the first element of the iterator value as the key and |
| 37 | +second element as the value. |
| 38 | + |
| 39 | +<example> |
| 40 | +var key1 = { foo: 1 }; |
| 41 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 42 | + |
| 43 | +var fromArray = new WeakMap([[key1, 'array0'], [key2, 'array1']]); |
| 44 | + |
| 45 | +console.log(fromArray.get(key1)); |
| 46 | +console.log(fromArray.get(key2)); |
| 47 | +console.log(); |
| 48 | + |
| 49 | +var generator = function*() { |
| 50 | + yield [key1, 'generator0']; |
| 51 | + yield [key2, 'generator1']; |
| 52 | +}; |
| 53 | + |
| 54 | +var fromGenerator = new WeakMap(generator()); |
| 55 | +console.log(fromGenerator.get(key1)); |
| 56 | +console.log(fromGenerator.get(key2)); |
| 57 | +</example> |
| 58 | + |
| 59 | +---- |
| 60 | +prototype.clear() : undefined |
| 61 | + |
| 62 | +Clears the key/value pairs from **this**. |
| 63 | + |
| 64 | +<example> |
| 65 | +var key1 = { foo: 1 }; |
| 66 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 67 | + |
| 68 | +var x = new WeakMap([[key1, 'value 1'], [key2, 'value 2']]); |
| 69 | + |
| 70 | +console.log(x.get(key1)); |
| 71 | +console.log(x.get(key2)); |
| 72 | + |
| 73 | +x.clear(); |
| 74 | + |
| 75 | +console.log(x.get(key1)); |
| 76 | +console.log(x.get(key2)); |
| 77 | +</example> |
| 78 | + |
| 79 | +---- |
| 80 | +prototype.delete(key : Object) : Boolean |
| 81 | + |
| 82 | +Removes **key** and its corresponding value from **this**. |
| 83 | +Returns **true** if **key** was in **this** before deleting it. |
| 84 | + |
| 85 | +<example> |
| 86 | +var key1 = { foo: 1 }; |
| 87 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 88 | + |
| 89 | +var x = new WeakMap([[key1, 'value 1'], [key2, 'value 2']]); |
| 90 | + |
| 91 | +console.log(x.get(key1)); |
| 92 | +console.log(x.get(key2)); |
| 93 | + |
| 94 | +x.delete(key1); |
| 95 | + |
| 96 | +console.log(x.get(key1)); |
| 97 | +console.log(x.get(key2)); |
| 98 | +</example> |
| 99 | + |
| 100 | +---- |
| 101 | +prototype.get(key : Object) : Object |
| 102 | + |
| 103 | +Returns the value stored for **key**. If no value is stored, |
| 104 | +returns %%/undefined|**undefined**%%. |
| 105 | +See also %%#has|**has()**%% and %%#set|**set()**%%. |
| 106 | + |
| 107 | +<example> |
| 108 | +var key1 = { foo: 1 }; |
| 109 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 110 | + |
| 111 | +var x = new WeakMap([[key1, 'value 1'], [key2, 'value 2']]); |
| 112 | + |
| 113 | +console.log(x.get(key1)); |
| 114 | +console.log(x.get(key2)); |
| 115 | + |
| 116 | +// get returns undefined for keys not in the WeakMap |
| 117 | +var key3 = { language: 'JavaScript' }; |
| 118 | +console.log(x.get(key3)); |
| 119 | +</example> |
| 120 | + |
| 121 | +---- |
| 122 | +prototype.has(key : Object) : Boolean |
| 123 | + |
| 124 | +Returns **true** if the map has a value stored for **key**. |
| 125 | + |
| 126 | +<example> |
| 127 | +var key1 = { foo: 1 }; |
| 128 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 129 | + |
| 130 | +var x = new WeakMap(); |
| 131 | + |
| 132 | +x.set(key1, undefined); |
| 133 | + |
| 134 | +// has() lets you check if a value is stored, even if |
| 135 | +// the value is undefined |
| 136 | +console.log(x.has(key1) + ' ' + x.get(key1)); |
| 137 | +console.log(x.has(key2) + ' ' + x.get(key2)); |
| 138 | +</example> |
| 139 | + |
| 140 | +---- |
| 141 | +prototype.set(key : Object, value : Object) : WeakMap |
| 142 | + |
| 143 | +Stores **value** in **this** at the specified **key**. |
| 144 | +**key** cannot be a primitive value |
| 145 | +(%%/Boolean|Boolean%%, |
| 146 | +%%/Number|Number%%, |
| 147 | +%%/String|String%%, |
| 148 | +or |
| 149 | +%%/undefined|undefined%%). |
| 150 | +If a value is already stored for that **key**, it is replaced with |
| 151 | +**value**. |
| 152 | +Returns **this**. |
| 153 | +See also %%#get|**get()**%% and %%#has|**has()**%%. |
| 154 | + |
| 155 | +<example> |
| 156 | +var key1 = { foo: 1 }; |
| 157 | +var key2 = { bar: ['a', 'b', 'c'] }; |
| 158 | + |
| 159 | +var x = new WeakMap([[key1, 'value 1'], [key2, 'value 2']]); |
| 160 | + |
| 161 | +console.log(x.get(key1)); |
| 162 | + |
| 163 | +x.set(key1, 'a different value'); |
| 164 | + |
| 165 | +console.log(x.get(key1)); |
| 166 | +</example> |
| 167 | + |
0 commit comments