함수의 호출 방식에 따라 가리키는 바가 달라짐 - 자바스크립트 특성
객체에 속하지 않은 함수에서는 this사용 의미 없음
this (화살표 함수 제외)자바스크립트의 독특한 동작방식
this가 가리키는 대상이 함수의 호출 주체 또는 그 방식에 따라 달라짐

해결하기 위해서
call, apply을 사용한 함수 호출bind를 사용한 this대상 고정// ⭐ this가 바인딩된 새 함수를 만듦
italian.makeRightStew = korean.makeStew.bind(korean);
console.log(
italian.makeRightStew(false, 2)
);
등등 더 어려운 내용이 있는데.. PASS!!!
function 선언 함수, 메서드, 화살표 함수 중 function 선언 함수만 생성자로 활용 가능
// obj에 function 선언 함수가 있다는 가정
const func1 = new obj.func1();
화살표 함수와 메서드는this를 정적으로 바인딩함
const obj = {
x: 1,
y: 2,
func1: function () {
console.log('1.', this);
},
func2 () {
console.log('2.', this);
},
func3: () => {
console.log('3.', this);
}
}
// this가 해당 객체를 가리킴
obj.func1();
obj.func2();
// 💡 this가 상위 스코프를 가리킴
obj.func3();
강의를 들을 때는 '으음.. 그렇군!'이라고 생각이 들었다.
하지만, 막상 정리를 해보려니 코드의 변화 바인딩적용한 거 뭐 어쩌구 저쩌구 헷갈린다. 그래서 이번 강의 내용 정리는 PASS!
출처
[제대로 파는 자바스크립트(JavaScript) - by 얄코], [강의링크]