WeakMap【弱参照マップ】オブジェクト

メモ コンストラクタ プロパティ メソッド

メモ

概要

  • 弱参照マップ (キー)
  • 自動ガベージコレクション
    • キー参照がなくなると削除
    • DOM 操作に有用 (メモリリーク防止)
  • キー:オブジェクト・シンボル
  • 要素数の取得・要素列挙・要素の全削除は不可
  • クラス定義による継承可能

参考:その他 配列・コレクション

外部リンク


コンストラクタ

構文説明
new WeakMap ( [ iterable ] ) コンストラクタ
new なし:TypeError例外

プロパティ

プロパティ説明
WeakMap.prototype[ @@toStringTag ] タグ (下記 例を参照)
weakMap[Symbol.toStringTag]:"WeakMap"
WeakMap.prototype.constructorコンストラクタ定義 (下記 例を参照)
WeakMap.prototypeプロトタイプ (下記 例を参照)

メソッド

メソッド説明
WeakMap.prototype.delete ( key )要素削除
WeakMap.prototype.get ( key )要素値取得
WeakMap.prototype.has ( key )要素有無
WeakMap.prototype.set ( key , value )要素追加・更新

console.log(WeakMap.prototype.constructor);
// 出力:ƒ WeakMap() { [native code] }
console.log(WeakMap.prototype);
// 出力:WeakMap {constructor: ƒ, delete: ƒ, get: ƒ, set: ƒ, has: ƒ, …}

const myWeakMap = new WeakMap();
console.log(myWeakMap[Symbol.toStringTag]);
// 出力:WeakMap
console.log(myWeakMap.constructor);
// 出力:ƒ WeakMap() { [native code] }

const obj1 = new Object("obj1");
const obj2 = new Object("obj2");
myWeakMap.set(obj1, "OBJ1");
myWeakMap.set(obj2, "OBJ2");
myWeakMap.delete(obj2);
const mySymbol = Symbol('My Symbol');
myWeakMap.set(mySymbol, 'VALUE');

console.log( myWeakMap.get(obj1) );  // 出力:OBJ1
console.log( myWeakMap.get(obj2) );  // 出力:undefined
console.log( myWeakMap.has(obj1) );  // 出力:true
console.log( myWeakMap.has(obj2) );  // 出力:false
console.log( myWeakMap.get(mySymbol) ); // 出力:VALUE