일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인텔리제이
- SQL
- Stream
- maven
- eqauls-hashcode
- javascript error
- MySQL
- 프로그래머스
- oracle
- tecoble
- flutter mac 설치
- class-transformer
- 프로젝트 여러 개
- DART
- JavaScript
- InteliJ
- ojdbc6
- Spring
- TypeScript
- 봤어요처리
- Aspect
- datagrip 한글깨짐
- 코어자바스크립트
- Java
- Mac
- node.js
- svn
- @RequestBody
- REST
- db
- Today
- Total
개발자가 되고 싶은 개발자
[JavaScript] this 본문
(코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성했습니다.)
자바스크립트에서는 실행 컨텍스트가 활성화 될 때(생성될 때), this의 정보가 결정됩니다.
(실행 컨텍스트에 대한 설명은 아래 포스팅을 참고하시면 됩니다.)
주로 실행 컨텍스트를 구성하는 방법은 함수를 호출할 때라고 했습니다.
즉, 함수를 호출할 때 this가 결정된다 라고 할 수 있습니다.
저자는 "함수를 어떤 방식으로 호출하느냐에 따라 값이 달라지는 것입니다."라고 했습니다.
어떤 방식과 상황이 있는지에 초점을 두고 this가 변하는 과정을 알아야 합니다.
전역공간에서 this
전역 컨텍스트를 생성하는 주체는 전역 객체 입니다. 즉, 전역 공간에서의 this는 전역 객체를 가리킵니다.
메서드로서 호출할 때 메서드 내부에서 this
(함수: 그 자체로 독자적 기능 수행 ex.) return a + b;
메서드: 호출한 대상 객체에 대한 기능 수행 ex.) student.length;
객체의 메서드로 호출될 경우에만 메서드로 호출되고, 그렇지 않은 경우에는 함수로 호출됨)
this에는 호출한 주체에 대한 정보가 담깁니다.
즉, student.length; 에서는 student 정보가 this에 담깁니다.
책에서도 설명하듯, 메서드로의 호출은 '.'의 여부로 쉽게 구분이 가능합니다.
함수로서 호출할 때 그 함수 내부에서 this
호출 주체(객체)를 명시하지 않고, 직접 호출하기 때문에 this에 대한 정보가 담기지 않습니다.
이 경우 전역 객체를 참조합니다. 메서드의 내부에서도 동일합니다.
이렇게 전역 객체를 참조하는 부분은 더글라스 아저씨의 설계상의 오류라고 합니다.
콜백 함수 호출 시 그 함수 내부에서 this
콜백 함수의 제어권을 넘겨받은 함수가 정의한 바에 따릅니다.
정의하지 않은 경우에는 전역 객체를 참조합니다.
'Dev > JavaScript & TypeScript' 카테고리의 다른 글
[JavaScript] CallBack Function (0) | 2022.05.11 |
---|---|
[TypeScript] 이펙티브 타입스크립트-(Part.2) 2장 타입스크립트의 타입 시스템 (0) | 2022.05.03 |
[JavaScript] 실행 컨텍스트 (0) | 2022.04.25 |
[TypeScript] 이펙티브 타입스크립트-(Part.1) 2장 타입스크립트의 타입 시스템 (0) | 2022.04.25 |
[TypeScript] 이펙티브 타입스크립트- 1장 타입스크립트 알아보기 (0) | 2022.04.18 |