teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

考えたこととご質問の2について理解が一部進んだため、質問内容を編集しました。

2021/09/11 08:08

投稿

manape
manape

スコア12

title CHANGED
File without changes
body CHANGED
@@ -40,7 +40,7 @@
40
40
  ### 考えたこととご質問
41
41
 
42
42
  1. addListenerメソッドは、あくまでイベント発火時にのみMapを参照できていればよくその他の時はMapへの参照を持っておく必要がないため、メモリを解放するためにわざわざこのような実装にしている?
43
- 2. addListenerメソッド内のthisは、この場合 `eventEmmiter` つまり生成されたインスタンス自身ている?そしてそれを新にlistenersMapというWeakMapkeyとしてsetている?
43
+ 2. `this (クラスインスタンス) を WeakMap のキーにすることで、インスタンスの外からはアクセスできない値保持できます。` とJS Primerにはありまたが、なかっ場合、どんな問題があり得るょうか?(つまり、インスタンスの外から値がアクセスできてしまう)
44
44
  3. 本旨とずれるかもしれませんが、このaddListenerメソッドは結局のところ何をしているのでしょうか?
45
45
  2の質問のように、インスタンス自身を新たなkeyとしてセットし、今までsetしたイベントリスナーと合体した配列を値にセットしている、ということはわかるのですが、それで一体どんなことが嬉しいのかいまいちイメージできません。イベント発火ごとに発火時の記録を格納していく、みたいなことでしょうか。。
46
46
 

2

言い回し微調整

2021/09/11 08:08

投稿

manape
manape

スコア12

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

通信エラーで前回保存箇所までしか投稿できていなかったので、続きの「考えたこととご質問」以降を書き直しました泣

2021/09/11 08:00

投稿

manape
manape

スコア12

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
- ### 補足情報(FW/ツールジョンど)
47
+ 基本的なことが抜け落ちているかもしれず、また例のでいろいろな想定ができるかとは思うので漠然としたご質問になり恐縮ですが、
46
-
47
- ここにより詳細な情報を記載ださい。
48
+ しくお願いたします