따라서 this가 외부 요인 때문에 바뀌는 것을 원하지 않는다면 함수 선언문 대신 화살표 함수를 사용하면 됩니다. 여기서 화살표 함수의 this가 무조건 window 객체라고 오해할 수 있는데, 화살표 함수는 기존 this를 유지할 뿐 this를 어떤 값으로 바꾸지는 않습니다.
const b = {
name: '제로초',
sayName() {
const whatIsThis = () => {
console.log(this);
};
whatIsThis();
}
};
b.sayName(); // b
sayName() 메서드를 호출하면 그 안에 whatIsThis() 함수도 같이 호출됩니다. 화살표 함수는 this를 window 객체로 만드는 게 아니라 기존의 this를 유지하므로 b.sayName()의 this인 b가 그대로 유지됩니다.