정리할 방법도 모르겠고 정리하면서 어지러운 바로 THIS
정의 from deepdive
- this는 자신의 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수 self-referencing variable 다.
- 코드 어디서든 참조할수있고 함수를 통해 암묵적으로 함수 내부에 전달된다.
this 의 값은 함수를 호출하는 방식에 의해 결정된다.
뭐든 강의에서 집중적으로 강조하는 문구다
개인적으로 우리가 THIS 를 사용할때 는 항상 WHAT IS THE VALUE OF THIS? 라는 생각을 갖고 해야한다.
bind apply call 등 연결고리가 없다면 굉장히 자유롭기 때문이다.
자 간단하게 시작을 해보자 (크롬을 콘솔을 연다)
- Window (non–strict mode)
- 콘솔에서 this를 입력시 Window가 호출된다.
- 확인 : ( windows===this ) true
- console.log(this) 당연히 windowObject이 호출된다
의문점 :
- 그럼 this 왜 window 보여주는가? this 랑 window 무슨 관련일까.
시도 :
- this 호출시 0:global 1:global . .를
발견 할 수 있다. 그래서 혹시나 window.this 를 입력했지만 undefined가 출력됬다.
- window 안에 유일한 this를 찾았는데 바로 globalThis였다. 소름돋게도 똑같은 0:global 1:global. . . !!!!
해결 :
- globalThis == this 입력시 true!!..
- "at the top level of script" this 는 globalThis 를 참조한다고 한다.
- globalThis는 global scope에 있는 global object (브라우저에서 window)이다.
window 의 참조는 공부할게 많기 때문에 this 에서 멈추자.
자 이제 왜 this가 가끔씩 Window 출력하는지 깨달았다. this의 기능도 기능이지만
순수 궁금증이였다.
개인적으로 this 와 window의 관계성을 알고 시작하면 좋다고 생각한다.
다음은 함수의 THIS를 알아 볼 것이다.