ES 6-WeakMap
1833 ワード
Setには対応するWeakSetがあり、MapにはWeakMapもあります.この記事では、WeakMapの特徴を学びます.まずWeakMapの基本的な特性を見てみます.
二:WeakMapの添削削減WeakMapのインターフェース関数はMapとほぼ一致していますが、clear()の方法はありません.
ですから、キーパッドのペアを記憶するシーンを使う必要があります.MapとWeakMapの間では、トレードオフが必要な点があります.
1: WeakMap
2: WeakMap null
3: WeakMap ,
次にWeakMapのインターフェースの方法を見てみます.一:WeakMapの新規作成と初期化はMapと同じです.WeakMapもnew WeakMap()を通じて新規作成と初期化ができます.let weakMap1 = new WeakMap();
let key1 = {};
let key2 = {};
let weakMap2 = new WeakMap([[key1, 'key1'],[key2, 'key2']]);
ただMapとは違って、WeakMapのkeyは対象でなければなりません.元のタイプではありません.二:WeakMapの添削削減WeakMapのインターフェース関数はMapとほぼ一致していますが、clear()の方法はありません.
1: set(key, value)
2: get(key) key value
3: has(key) key WeakMap
4: delete(key) key
以上のすべての方法を使った例を見ます.let weakMap = new WeakMap();
let key1 = {'id': 1};
let key2 = {'id': 2};
weakMap.set(key1, {'name': 'mike'});
weakMap.set(key2, {'name': 'lily'});
console.log(weakMap.get(key1)); //{name: "mike"}
console.log(weakMap.has(key1)); //true
weakMap.delete(key1);
console.log(weakMap);
最後の行のコードの印刷結果は以下の通りです.WeakMap {{…} => {…}}
__proto__: WeakMap
[[Entries]]: Array(1)
0: {Object => Object}
key: {id: 2}
value: {name: "lily"}
length: 1
三:WeakMapの制限1: WeakMap size
2: WeakMap set() ,key null ,
3: WeakMap , clear(), forEach() , for...of
WeakMapの使用シーンについては先に述べましたが、WeakMapのkeyはnullの対象でないといけないということでした.WeakMapに格納されているkeyも対象の弱い引用です.他に強い引用がないと、JavaScriptのエンジンのゴミ回収メカニズムが自動的に回収されます.key対応のvalueは対象であれば、依然として格納されている対象の強い引用です.ですから、キーパッドのペアを記憶するシーンを使う必要があります.MapとWeakMapの間では、トレードオフが必要な点があります.
1: key, , WeakMap Map
2: WeakMap, WeakMap ( ‘ :WeakMap ’)。
以上がWeakMapの基本的な特殊な使い方とシーンです.