ES 6-WeakMap

1833 ワード

Setには対応するWeakSetがあり、MapにはWeakMapもあります.この記事では、WeakMapの特徴を学びます.まず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の基本的な特殊な使い方とシーンです.