Skip to content

Commit 8b999c5

Browse files
authored
fix(map): WeakMapのEventEmitterのコード例を修正 (#1618)
* fix(map): WeakMapのEventEmitterのコード例を修正 Signed-off-by: azu <[email protected]> * Update source/basic/map-and-set/README.md * fix Signed-off-by: azu <[email protected]> * fix Signed-off-by: azu <[email protected]> * fix Signed-off-by: azu <[email protected]> * fix Signed-off-by: azu <[email protected]> * fix: 実行ボタンを外す Signed-off-by: azu <[email protected]> --------- Signed-off-by: azu <[email protected]>
1 parent 115095b commit 8b999c5

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

source/basic/map-and-set/README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -318,31 +318,31 @@ obj = null;
318318
このマップを`Map`で実装してしまうと、明示的に削除されるまでイベントリスナーはメモリ上に残り続けます。
319319
ここで`WeakMap`を使うと、`addListener` メソッドに渡された`listener``EventEmitter` インスタンスが参照されなくなった際、自動的に解放されます。
320320
321-
{{book.console}}
322321
<!-- doctest:meta:{ "ECMAScript": 2020 } -->
323322
```js
324323
// イベントリスナーを管理するマップ
325324
const listenersMap = new WeakMap();
326325

327326
class EventEmitter {
328327
addListener(listener) {
329-
// this にひもづいたリスナーの配列を取得する
328+
// this(インスタンス)にひもづいたリスナーの配列を取得する
330329
const listeners = listenersMap.get(this) ?? [];
331330
const newListeners = listeners.concat(listener);
332-
// this をキーに新しい配列をセットする
331+
// this をキーにして、新しいリスナーの配列をセットする
333332
listenersMap.set(this, newListeners);
334333
}
334+
// ...EventEmitterには他にもメソッドがあるが省略...
335335
}
336336

337-
// 上記クラスの実行例
338-
339-
let eventEmitter = new EventEmitter();
340-
// イベントリスナーを追加する
341-
eventEmitter.addListener(() => {
342-
console.log("イベントが発火しました");
337+
// `event`は`EventEmitter`のインスタンスへの参照をもつ
338+
let event = new EventEmitter();
339+
// `EventEmitter`のインスタンスへイベントリスナーを追加する
340+
event.addListener(() => {
341+
// `EventEmitter`のインスタンスに紐づくイベントリスナーの処理
343342
});
344-
// eventEmitterへの参照がなくなったことで自動的にイベントリスナーが解放される
345-
eventEmitter = null;
343+
// `event`へ`null`を代入することで、`EventEmitter`のインスタンスへの参照がなくなる
344+
// インスタンスがどこからも参照されなくなったため、紐づいていたイベントリスナーが自動的に解放される
345+
event = null;
346346
```
347347
348348
また、あるオブジェクトから計算した結果を一時的に保存する用途でもよく使われます。

0 commit comments

Comments
 (0)