回答編集履歴
2
例を追加
test
CHANGED
@@ -19,6 +19,36 @@
|
|
19
19
|
作ったプロパティに引数のdataを代入して保管します。
|
20
20
|
|
21
21
|
当然グローバルスコープの`this.tripMembers`は手付かずになりますし、get関数はset関数と兄弟の関係にあるので取り出す事は不可能です
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
別にthis越しに取りに行かんでも、普通に変数としてアクセスすれば、
|
26
|
+
|
27
|
+
存在しない変数名の場合は上を探しにいくのでアクセスできますよ。
|
28
|
+
|
29
|
+
なのでsetやgetという概念自体が不要です。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
```JavaScript
|
34
|
+
|
35
|
+
var tripMembers = {};
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
function setTripMembers(data) { //setter
|
40
|
+
|
41
|
+
tripMembers = data;
|
42
|
+
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
setTripMembers({taro: {name: "taro"}});
|
48
|
+
|
49
|
+
console.log(tripMembers); // {taro: {name: "taro"}}
|
50
|
+
|
51
|
+
```
|
22
52
|
|
23
53
|
|
24
54
|
|
1
変な箇所修正
test
CHANGED
@@ -1,28 +1,24 @@
|
|
1
|
-
あー、
|
1
|
+
あー、これはJSの難解な仕様の一つである「this解決」が原因でしょうね。
|
2
|
-
|
3
|
-
原因はthis解決ですね。
|
4
2
|
|
5
3
|
|
6
4
|
|
7
|
-
getで
|
5
|
+
getの関数内で`this.tripMembers`を探しに行ってますね。
|
8
6
|
|
9
|
-
|
7
|
+
その結果ちゃんと`{}`という空のオブジェクトが帰ってきます。
|
10
8
|
|
11
|
-
|
9
|
+
この理由はgetのスコープの関係で、スコープ内に存在しない場合は上のスコープへ値を探しに行きます。
|
12
10
|
|
13
|
-
|
11
|
+
最終的にグローバルスコープに到達することで`this.tripMembers`が見つかるので空のオブジェクトが帰ってきます。
|
14
12
|
|
15
13
|
|
16
14
|
|
17
|
-
setのこれは代入演算子ですね。
|
18
|
-
|
19
15
|
setは関数なのでthisそのものは存在しています。
|
20
16
|
|
21
|
-
|
17
|
+
代入演算子を利用したことで`setTripMembers`スコープの中に`this.tripMembers`というプロパティを生成。
|
22
18
|
|
23
|
-
引数のdataを代入して保管します。
|
19
|
+
作ったプロパティに引数のdataを代入して保管します。
|
24
20
|
|
25
|
-
当然グローバルスコープの`this.tripMembers`は手付かずになるで
|
21
|
+
当然グローバルスコープの`this.tripMembers`は手付かずになりますし、get関数はset関数と兄弟の関係にあるので取り出す事は不可能です
|
26
22
|
|
27
23
|
|
28
24
|
|
@@ -38,7 +34,7 @@
|
|
38
34
|
|
39
35
|
ES6以降のJSではthisを使わずにプログラミングしていける事を目指して、
|
40
36
|
|
41
|
-
this
|
37
|
+
thisを極力作らないし、使わずに済むような機能や構文が多く採用されています。
|
42
38
|
|
43
39
|
なので新しいJSのプログラミングではthisは不要です。
|
44
40
|
|
@@ -48,4 +44,4 @@
|
|
48
44
|
|
49
45
|
thisはJS上で4種類の意味合いに変化するよくわからん実装になってます。
|
50
46
|
|
51
|
-
[Ninjaの極意](https://www.amazon.co.jp/dp/B00ESXY9MA/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)のような書籍を読んで学習してください。
|
47
|
+
私も説明しきれる程には詳しくないので、[Ninjaの極意](https://www.amazon.co.jp/dp/B00ESXY9MA/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)のような書籍を読んで学習してください。
|