回答編集履歴
1
代替案を提示
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
|
-
l
|
23
|
+
class user {
|
4
24
|
|
5
|
-
name
|
25
|
+
static public name = "ほげ太郎";
|
6
26
|
|
7
|
-
age
|
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
|
-
|
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`である、グローバルオブジェクトが指されます。
|