티스토리 뷰
1. 자바스크립트를 사용하면 할수록 혼란스러운 것이 이 키워드이다. 개인적으로 실행환경과 더블어 자바스크립트의 양대 산맥이다. 그 다음이 비동기식 처리 정도로 보인다.
2. 사실 this을 이해하려면 실행환경이 어떻게 만들어지고 어떤 절차로 변수환경, Lexcial Chain, this가 생성되고 creation phase와 execution phase에 이들이 각각 어떻게 변화는지를 우선 이해하는 것이 필요하다.
3. 하지만, 이 내용들을 이해하는 것은 상당히 까다롭다. 그리고 고급 라이브러리를 개발할 수준이 아니면 그다지 필요없는 것이 사실이다.
4. this는 위의 내용들과 밀접하게 관련되어 있지만 별도로 이해해도 무방하다.
5. 설명
사전 지식 - this 키워드는 함수 호출시에 동적으로 설정되는 것을 기억하는 것이 중요하다. Runtime이 키워드이다.
1> Global scope -> this는 window object를 가리키다.
2> 일반함수 호출 -> strict 모드는 undefined, 일반모드는 window object이다.
3> 메소드 호출 -> 메소드를 호출하는 객체를 가리킨다.
4> arrow 함수 -> arrow 함수는 사실 statement가 아니라 expression이라 this가 없다. 따라서 Lexcial Chain에 따라 함수를 소유하는 범위에 존재하는 this를 참조한다. 즉 부모의 this를 참조한다.
5> Event Handler -> event handler이 붙어 있는 DOM element를 가리킨다.
나는 2번이 제일 이해하기가 힘들었다. 이건 자바스크립트를 설계한 사람이 지정한 거라 고민할 게 없다.
아무리 중첩된 함수라도 그냥 함수를 호출하면 그 함수에서 사용하는 this는 무조건 일반모드일 때 window가 된다.
시간이 있으면 하나하나 예를 가지고 와서 설명하겠다. to be continued
'Languages' 카테고리의 다른 글
Ubuntu Java 여러 버전 관리 (0) | 2022.10.31 |
---|---|
Java: Iterable을 List로 변환하는 가장 쉬운 방법 (0) | 2022.07.16 |
Kotlin : equals, hashCode, ==, === (0) | 2021.09.19 |
Golang : WSL2에서 nodemon restart 동작하지 않는 문제 (0) | 2021.06.27 |
Golang : New (0) | 2021.06.20 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 상속
- one-to-one
- jsp
- hibernate
- Rest
- 하이버네이트
- 자바
- 외부파일
- Spring Security
- 매핑
- Validation
- mapping
- RestTemplate
- MYSQL
- XML
- Many-To-Many
- one-to-many
- 스프링
- 설정하기
- Angular
- 설정
- login
- spring boot
- Spring
- WebMvc
- Security
- 스프링부트
- crud
- 로그인
- form