일반 함수의 this는 호출 위치에서 정의합니다.
const user = {
firstName: 'Sera',
lastName: 'Kim',
age: 25,
getFullName(){
//user.firstName, user.lastName과 같은 의미입니다.
return `${this.firstName} ${this.lastName}`;
}
}
console.log(user.getFullName());
this는 getFullName이라는 메서드가 들어있는 user라는 객체데이터를 가리킵니다.
화살표 함수의 this는 다릅니다. 자신이 선언된 함수 범위에서 정의합니다.
자신이 선언된 함수를 감싸는 외부의 또 다른 함수를 기준으로 해서 this를 사용합니다.
function user() {
this.firstName = 'Annie';
this.lastName = 'Thomson';
return {
firstName: 'Sera',
lastName: 'Kim',
age: 25,
getFullName: () =>{
return `${this.firstName} ${this.lastName}`;
}
}
}
const u = user();
console.log(u.getFullName()); //Annie Thomson