回答編集履歴
1
おまけ
test
CHANGED
@@ -16,3 +16,19 @@
|
|
16
16
|
①fn3はコールバックが`function`のため、`window`に束縛します。fn2はアロー関数のため、`setTimeout`のコールバックであっても束縛をせずに、`this`は`person`のままなのがエラーにならない理由です。
|
17
17
|
|
18
18
|
②その説明はクラスの話かと思いますので話がズレます。アロー関数は何があろうと`this`を束縛しないため、クラスのメソッドに使っても`this`をインスタンスに束縛をしません。
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
おまけ。質問コードに続いて以下を実行するとこのような結果になります。
|
23
|
+
```js
|
24
|
+
const f = person.fn4;
|
25
|
+
f(); // error
|
26
|
+
|
27
|
+
const obj = { fn1: console.log };
|
28
|
+
obj.fn4 = person.fn4;
|
29
|
+
obj.fn4(); // ""
|
30
|
+
|
31
|
+
const obj2 = { fn1: () => console.log(this) };
|
32
|
+
obj2.fn4 = person.fn4;
|
33
|
+
obj2.fn4(); // window
|
34
|
+
```
|