回答編集履歴

1

代替案を提示

2020/10/23 16:16

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -1,27 +1,45 @@
1
+ `function`においての`this`は、**実行時においてのthis**を指せますが、
2
+
3
+ アロー関数は、**定義時のthis**が実行時の`this`に入るからです。
4
+
5
+
6
+
7
+ つまり、`getAge`メソッド実行時は、アロー関数では、`user`は指せず、定義時の`this`である、グローバルオブジェクトが指されます。
8
+
9
+
10
+
11
+ ではどうするかというと、
12
+
13
+ まぁ、どうしてもアローなどでやりたいならば、
14
+
15
+ `static`なクラスで定義するのがよいのでは?
16
+
17
+ と思います。
18
+
19
+
20
+
1
21
  ```typescript
2
22
 
3
- let user = {
23
+ class user {
4
24
 
5
- name: "ほげ太郎",
25
+ static public name = "ほげ太郎";
6
26
 
7
- age: 22,
27
+ static public age = 22;
8
28
 
9
- address: "ほげ市",
29
+ static public address = "ほげ市";
10
30
 
11
- hobby: ["寝ること", "食べること"],
31
+ static public hobby: strung[] = ["寝ること", "食べること"];
12
32
 
33
+
34
+
35
+ static public getAge(){
36
+
13
- getAge: () => this.age
37
+ return this.age;
38
+
39
+ }
14
40
 
15
41
  };
16
42
 
17
43
  console.log(user.getAge());
18
44
 
19
45
  ```
20
-
21
- `function`においての`this`は、**実行時においての実行親**を指せますが、
22
-
23
- アロー関数は、**定義時の親**が`this`に入るからです。
24
-
25
-
26
-
27
- つまり、`getAge`メソッド実行時は、アロー関数では、`user`は指せず、定義時の`this`である、グローバルオブジェクトが指されます。