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

質問編集履歴

7

分かってるようで分かっていないことを追記

2018/04/16 13:19

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -80,4 +80,28 @@
80
80
  ```
81
81
 
82
82
  # ★ 分かってること・分かったこと
83
- - WeakMapのキー以外から参照されていないものはガベージコレクションの対象になる。(WeakMapは参照カウントを増やさないみたいなイメージ)
83
+ - WeakMapのキー以外から参照されていないものはガベージコレクションの対象になる。(WeakMapは参照カウントを増やさないみたいなイメージ)
84
+
85
+ # ★ 分かってるようで分かっていないこと
86
+
87
+ > MapにしろWeakMapにしろ、キーにオブジェクトをなぜ使う必要があるのかが分からない。
88
+
89
+ と、冒頭の「分からないこと・知りたいこと」に追加しましたが、キーをオブジェクトにするということは、リレーショナルデータベースみたいなのをイメージすれば良いのかなと思ったのですが、こういう捉え方はどうなのか。。。
90
+
91
+ ```
92
+ let authorA = {
93
+ id: 1,
94
+ name: 'xxx'
95
+ }
96
+
97
+ let articles = [
98
+ {id: 1, title: 'aaa'},
99
+ {id: 2, title: 'bbb'}
100
+ ]
101
+
102
+ let wmap = new WeakMap();
103
+ wmap.set(authorA, articles);
104
+ console.log(wmap.get(authorA));
105
+ // [ { id: 1, title: 'aaa' },
106
+ // { id: 2, title: 'bbb' } ]
107
+ ```

6

分からないこと2を追加

2018/04/16 13:19

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,10 @@
1
1
  # ★ 分からないこと・知りたいこと
2
2
 
3
- WeakMapの使い道が分からなかったり、これを使うと何が良いのかが分かりません。
3
+ 1. WeakMapの使い道が分からなかったり、これを使うと何が良いのかが分かりません。
4
4
  そこをクリアにしたいです。
5
5
 
6
+ 2. MapにしろWeakMapにしろ、キーにオブジェクトをなぜ使う必要があるのかが分からない。(ということがよく分かっていないのだと後になって気づきました)
7
+
6
8
  # ★ 試したこと
7
9
 
8
10
  **1.WeakMapについて以下の記事を呼んで、一応理解はした気はします。ただ、使い道やメリットがイメージ出来ていません。**

5

Objectの場合のコードに誤りがあったので修正

2018/04/16 13:06

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -71,10 +71,10 @@
71
71
  console.log(Object.keys(x)); // ['y']
72
72
  console.log(x.hasOwnProperty('y')); // true
73
73
 
74
- delete y;
74
+ delete x.y;
75
75
 
76
- console.log(Object.keys(x)); // ['y']
76
+ console.log(Object.keys(x)); // []
77
- console.log(x.hasOwnProperty('y')); // true - weakMapと同じのようです。
77
+ console.log(x.hasOwnProperty('y')); // false
78
78
  ```
79
79
 
80
80
  # ★ 分かってること・分かったこと

4

分かってること・分かったことを追記

2018/04/16 13:04

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -75,4 +75,7 @@
75
75
 
76
76
  console.log(Object.keys(x)); // ['y']
77
77
  console.log(x.hasOwnProperty('y')); // true - weakMapと同じのようです。
78
- ```
78
+ ```
79
+
80
+ # ★ 分かってること・分かったこと
81
+ - WeakMapのキー以外から参照されていないものはガベージコレクションの対象になる。(WeakMapは参照カウントを増やさないみたいなイメージ)

3

objectの例を追加

2018/04/15 08:47

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -58,4 +58,21 @@
58
58
  console.log(weakMap.get(x)) // undefined
59
59
 
60
60
  //weakMapにはそもそもkeys()メソッドはない。
61
+ ```
62
+
63
+ # Object
64
+ ```
65
+ let x = {
66
+ y: {
67
+ id: 1
68
+ }
69
+ }
70
+
71
+ console.log(Object.keys(x)); // ['y']
72
+ console.log(x.hasOwnProperty('y')); // true
73
+
74
+ delete y;
75
+
76
+ console.log(Object.keys(x)); // ['y']
77
+ console.log(x.hasOwnProperty('y')); // true - weakMapと同じのようです。
61
78
  ```

2

誤字

2018/04/15 08:28

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  # ★ 試したこと
7
7
 
8
- **1.WeakMapについて以下の記事を呼んで、一応理解はした気はします。ただ、使い道メリットがイメージ出来ていません。**
8
+ **1.WeakMapについて以下の記事を呼んで、一応理解はした気はします。ただ、使い道メリットがイメージ出来ていません。**
9
9
 
10
10
  [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
11
11
 

1

補足

2018/04/15 08:24

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  # ★ 試したこと
7
7
 
8
- **1.WeakMapについて以下の記事を呼んで、一応理解はした気はします。**
8
+ **1.WeakMapについて以下の記事を呼んで、一応理解はした気はします。ただ、使い道はメリットがイメージ出来ていません。**
9
9
 
10
10
  [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
11
11