回答編集履歴
1
代替案を提示
answer
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
+
`function`においての`this`は、**実行時においてのthis**を指せますが、
|
2
|
+
アロー関数は、**定義時のthis**が実行時の`this`に入るからです。
|
3
|
+
|
4
|
+
つまり、`getAge`メソッド実行時は、アロー関数では、`user`は指せず、定義時の`this`である、グローバルオブジェクトが指されます。
|
5
|
+
|
6
|
+
ではどうするかというと、
|
7
|
+
まぁ、どうしてもアローなどでやりたいならば、
|
8
|
+
`static`なクラスで定義するのがよいのでは?
|
9
|
+
と思います。
|
10
|
+
|
1
11
|
```typescript
|
2
|
-
|
12
|
+
class user {
|
3
|
-
name
|
13
|
+
static public name = "ほげ太郎";
|
4
|
-
age
|
14
|
+
static public age = 22;
|
5
|
-
address
|
15
|
+
static public address = "ほげ市";
|
6
|
-
hobby: ["寝ること", "食べること"]
|
16
|
+
static public hobby: strung[] = ["寝ること", "食べること"];
|
17
|
+
|
18
|
+
static public getAge(){
|
7
|
-
|
19
|
+
return this.age;
|
20
|
+
}
|
8
21
|
};
|
9
22
|
console.log(user.getAge());
|
10
|
-
```
|
23
|
+
```
|
11
|
-
`function`においての`this`は、**実行時においての実行親**を指せますが、
|
12
|
-
アロー関数は、**定義時の親**が`this`に入るからです。
|
13
|
-
|
14
|
-
つまり、`getAge`メソッド実行時は、アロー関数では、`user`は指せず、定義時の`this`である、グローバルオブジェクトが指されます。
|