2021년 05월 26일
수정하기
문서 생성 2021-05-26 14:51:27 최근 수정 2021-05-26 14:51:34
Note
JavaScript
this
- 자신이 속한 객체, 자신이 생성할 인스턴스를 가리키는 자기 참조 변수
- 자바스크립트 엔진에 의해 암묵적으로 생성된다.
- 함수가 호출되는 방식에 따라 바인딩될 값이 동적으로 결정된다.
- 일반 함수 내부에서는 전역 객체
window
- 메서드 내부에서는 메서드를 호출한 객체
- 메서드 내부의 중첩함수는 일반 함수로 호출되어
this
에 전역 객체가 바인되는 문제가 있음
- 메서드 내부의 중첩함수는 일반 함수로 호출되어
- 생성자 함수 내부에서는 생성자 함수가 생성할 인스턴스
- 일반 함수 내부에서는 전역 객체
Function.prototype.apply/call/bind
메서드 호출- 함수를 호출하면서 첫 번째 인수로 전달한 객체를 호출한 함수의
this
에 바인딩 apply
- 호출할 함수의 인수를 배열로 묶어 전달
call
- 호출할 함수의 인수를 쉼표로 구분해서 전달
- [[유사 배열 객체]]에 배열 메서드를 사용할 때
Array.prototype.slice.call(arguments)
bind
- 함수로 호출하진 않고
this
로 사용할 객체만 전달thisBinding.bind(thisArg)()
- 호출하려면 명시적으로 호출
- 함수로 호출하진 않고
- 함수를 호출하면서 첫 번째 인수로 전달한 객체를 호출한 함수의
- 메서드 내 중첩 함수/콜백 함수의
this
바인딩을 메서드의this
바인딩과 일치시키기- 변수할당 방법
bind
메서드- [[화살표 함수]]
- [[화살표 함수]] 내부의
this
는 상위 스코프의this
를 가리킨다.
- [[화살표 함수]] 내부의
- 실행 컨텍스트
- ECMAScript의 소스코드 타입, 소스코드 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문에 구분한다.
- 전역 코드
- 함수 코드
eval
코드- 모듈 코드
- 자바스크립트 엔진의 소스코드 처리 과정
- 소스코드 평가 & 소스코드 실행
- 평가 과정에서 실행 컨텍스트를 생성 → 변수, 함수 등 선어문 먼저 실행 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프(Lexical Environment의 environmentRecord)에 등록
- 평가 과정 후 선언문 제외 코드가 실행(런타임 시작), 실행에 필요한 정보는 실행 컨텍스트가 관리하는 스코프를 검색해서 얻고 실행한 결과는 다시 실행 컨텍스트가 관리하는 스코프에 등록됨
- ECMAScript의 소스코드 타입, 소스코드 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문에 구분한다.
log
- 🎾 쉬는 날이지만 가서 게임했다. 첫술에 배부를 순 없으니까 더 열심히 하겠다.