質問編集履歴
3
考えたこととご質問の2について理解が一部進んだため、質問内容を編集しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
### 考えたこととご質問
|
41
41
|
|
42
42
|
1. addListenerメソッドは、あくまでイベント発火時にのみMapを参照できていればよくその他の時はMapへの参照を持っておく必要がないため、メモリを解放するためにわざわざこのような実装にしている?
|
43
|
-
2.
|
43
|
+
2. `this (クラスインスタンス) を WeakMap のキーにすることで、インスタンスの外からはアクセスできない値を保持できます。` とJS Primerにはありましたが、そうしなかった場合、どんな問題があり得るのでしょうか?(つまり、インスタンスの外から値がアクセスできてしまう)
|
44
44
|
3. 本旨とずれるかもしれませんが、このaddListenerメソッドは結局のところ何をしているのでしょうか?
|
45
45
|
2の質問のように、インスタンス自身を新たなkeyとしてセットし、今までsetしたイベントリスナーと合体した配列を値にセットしている、ということはわかるのですが、それで一体どんなことが嬉しいのかいまいちイメージできません。イベント発火ごとに発火時の記録を格納していく、みたいなことでしょうか。。
|
46
46
|
|
2
言い回し微調整
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
JS Primerを読んでいて不明なところがありご質問させていただければと思います。
|
4
4
|
|
5
5
|
|
6
|
-
### ご質問
|
6
|
+
### ご質問箇所
|
7
7
|
▼該当箇所
|
8
8
|
https://jsprimer.net/basic/map-and-set/#weakmap
|
9
9
|
|
1
通信エラーで前回保存箇所までしか投稿できていなかったので、続きの「考えたこととご質問」以降を書き直しました泣
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,9 +8,8 @@
|
|
8
8
|
https://jsprimer.net/basic/map-and-set/#weakmap
|
9
9
|
|
10
10
|
WeakMapについて学んでおり、弱い参照でGCからのメモリ解放を妨げないためにメモリリークを起こさないようにできる、という概要はなんとなく理解できました。
|
11
|
-
ただGCやメモリリークとは?の詳細までは理解できていないかもしれません。
|
12
11
|
|
13
|
-
その中で、WeakMapの欄にある使用例の処理について、いまいち何をしているのか、また何を意図してそうなっているのかがソースコードから読み解け
|
12
|
+
その中で、WeakMapの欄にある使用例の処理について、いまいち何をしているのか、また何を意図してそうなっているのかがソースコードから読み解けず、お知恵をお貸しいただけると幸いです。以下該当の箇所の引用です。
|
14
13
|
|
15
14
|
```
|
16
15
|
// イベントリスナーを管理するマップ
|
@@ -38,10 +37,12 @@
|
|
38
37
|
```
|
39
38
|
|
40
39
|
|
41
|
-
###
|
40
|
+
### 考えたこととご質問
|
42
41
|
|
42
|
+
1. addListenerメソッドは、あくまでイベント発火時にのみMapを参照できていればよくその他の時はMapへの参照を持っておく必要がないため、メモリを解放するためにわざわざこのような実装にしている?
|
43
|
+
2. addListenerメソッド内のthisは、この場合 `eventEmmiter` つまり生成されたインスタンス自身を指している?そしてそれを新たにlistenersMapというWeakMapのkeyとしてsetしている?
|
43
|
-
|
44
|
+
3. 本旨とずれるかもしれませんが、このaddListenerメソッドは結局のところ何をしているのでしょうか?
|
45
|
+
2の質問のように、インスタンス自身を新たなkeyとしてセットし、今までsetしたイベントリスナーと合体した配列を値にセットしている、ということはわかるのですが、それで一体どんなことが嬉しいのかいまいちイメージできません。イベント発火ごとに発火時の記録を格納していく、みたいなことでしょうか。。
|
44
46
|
|
45
|
-
|
47
|
+
基本的なことが抜け落ちているかもしれず、また例のコードなのでいろいろな想定ができるかとは思うので漠然としたご質問になり恐縮ですが、
|
46
|
-
|
47
|
-
|
48
|
+
宜しくお願いいたします。
|