WeakMap【弱参照マップ】オブジェクトの基本操作
・new WeakMap【コンストラクタ】
・delete【要素削除】メソッド
・get【要素値取得】メソッド
・has【要素有無】メソッド
・set【要素追加・更新】メソッド

メモ

  • WeakMap弱参照マップ】オブジェクトの基本操作
  • 列挙方法はなし

構文

操作構文戻り値例外備考
コンストラクタnew WeakMap ( [ iterable ] ) WeakMap【弱参照マップ】オブジェクトTypeError 例外
要素削除delete ( key ) true:要素削除
false:要素なし
要素値取得get ( key ) 要素の値:要素あり
undefined:要素なし
要素有無has ( key ) true:要素あり
false:要素なし
要素追加・更新set ( key, value ) WeakMap【弱参照マップ】オブジェクトTypeError 例外既存要素:更新

  • iterable:キーと値から成るイテレータオブジェクト 及び それに準ずるもの (キーと値の配列から成る2次元配列等)
  • key:要素のキー
  • value:要素の値

TypeError 例外new WeakMap【コンストラクタ】new なし (関数として呼び出し)
入力のiterableが不正
set【要素追加・更新】入力のkeyがオブジェクト以外

var weakMap1 = new WeakMap();
var obj1 = new Object("obj1");
var obj2 = new Object("obj2");
var obj3 = new Object("obj3");
weakMap1.set(obj1, "OBJ1");
weakMap1.set(obj2, "OBJ2");
weakMap1.set(obj3, "OBJ3");
weakMap1.set(obj3, "OBJ3-new");   // 更新
console.log(weakMap1.get(obj1));  // 出力:OBJ1
console.log(weakMap1.get(obj2));  // 出力:OBJ2
console.log(weakMap1.get(obj3));  // 出力:OBJ3-new
console.log(weakMap1.has(obj1));  // 出力:true
console.log(weakMap1.has(obj2));  // 出力:true
console.log(weakMap1.has(obj3));  // 出力:true
obj2 = new Object("obj2");        // 別のオブジェクト
weakMap1.delete(obj3);            // 削除
console.log(weakMap1.get(obj1));  // 出力:OBJ1
console.log(weakMap1.get(obj2));  // 出力:undefined (元のオブジェクトなし)
console.log(weakMap1.get(obj3));  // 出力:undefined (削除済)
console.log(weakMap1.has(obj1));  // 出力:true
console.log(weakMap1.has(obj2));  // 出力:false (元のオブジェクトなし)
console.log(weakMap1.has(obj3));  // 出力:false (削除済)
var objA = new Object("objA");
var objB = new Object("objB");
var objC = new Object("objC");
var array = [ [objA, 1], [objB, 3], [objC, 5] ];
var weakMap2 = new WeakMap(array);
console.log(weakMap2.get(objA));  // 出力:1
console.log(weakMap2.get(objB));  // 出力:3
console.log(weakMap2.get(objC));  // 出力:5
var weakMapNg1 = WeakMap();       // TypeError 例外 (new なし)
var weakMapNg2 = new WeakMap(123);// TypeError 例外 (入力のイテレータオブジェクトが不正)
var weakMap3 = new WeakMap();
weakMap3.set(123, "123");         // TypeError 例外 (キーがオブジェクト以外)

関連