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 例外 (キーがオブジェクト以外)
関連
- ECMAScript 2015 (6) (英語)
- ECMAScript 2016 (7) (英語)