ES.next WeakMap
- 10. WeakMap 用法
1. set(key, value)
– key を指定して value を設定
2. get(key)
– key にひもづけられた value を取得
3. has(key)
– key にひもづけられた値があるかチェック
4. delete(key)
– key に対するエントリを削除
※ has, delete は Firefox 独自実装
- 13. {}・Object() と比較して
1. key にオブジェクトが指定可能
– しかも多くの実装では定数時間で値が取得できる
2. key に指定されたオブジェクトを「弱く」参照
– GC (Garbage Collector) は何からも参照されていない
オブジェクトを削除対象とする
– WeakMap の key として指定されたオブジェクトは GC
から見ると「参照されていない」ことに
– 他にそのオブジェクトを参照しているものが存在しなけ
れば GC は遠慮無くオブジェクトを削除する
– (時間の都合上,詳しい説明はなし)
- 18. オブジェクトの外部拡張 (1/2)
• 「オブジェクトを拡張して付加情報を持たせたいが,そ
れができない」ということは良くある
• 例)
– DOM ノードに独自プロパティを持たせると色々マズい
• “What's wrong with extending the DOM”
– http://perfectionkills.com/whats-wrong-with-extending-the-dom/
– ECMAScript 5 ではオブジェクトの拡張を禁止できる
• Object.freeze(obj)
“bar”
プロパティの追加
obj obj
“foo”