質問編集履歴
7
分かってるようで分かっていないことを追記
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を追加
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の場合のコードに誤りがあったので修正
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)); // [
|
76
|
+
console.log(Object.keys(x)); // []
|
77
|
-
console.log(x.hasOwnProperty('y')); //
|
77
|
+
console.log(x.hasOwnProperty('y')); // false
|
78
78
|
```
|
79
79
|
|
80
80
|
# ★ 分かってること・分かったこと
|
4
分かってること・分かったことを追記
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の例を追加
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
誤字
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
補足
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
|
|