#Thisの範囲の違い
- 普通の関数
- Thisは呼び出したオブジェクトのものになる。つまり呼び出し元のオブジェクトによってThisは変わる。
- アロー関数
- 宣言された関数は、宣言された時点でのThis。この場合はグローバルオブジェクトであるnum =1がThisになり決定される。呼び出し元のオブジェクトによってThisは変わることはない。
num = 1 //// JavaScriptでvarやletを付けずに宣言された変数はグローバルオブジェクトというオブジェクトのプロパティになる
const obj1 = {
num: 444,
fn: function() {
console.log(this.num);
}
};
const obj2 = {
num: 888,
fn:()=>{
console.log(this.num);
}
};
obj1.fn(); // 444
obj2.fn(); // 1