/////
Search

23-25장

23장. 실행컨텍스트

소스코드 4가지 타입
-전역 코드
-함수 코드
-eval 코드(빌트인 전역함수)
-모듈 코드
→ 과정과 관리 내용이 다름
1.
소스코드 평가 과정
컨텍스트 생성
선언문만 실행해 생성된 변수/함수의 식별자를 키로 스코프에 등록
( + undefined로 초기화, arguments 객체 생성, this 바인딩 )
2.
소스코드 실행 과정 (런타임)
스코프 등록 확인
값 할당, 할당 결과를 실행 컨텍스트에 등록
실행 컨텍스트
소스코드를 실행하는데 필요한 환경을 제공하고, 코드의 실행결과를 실제로 관리하는 영역
식별자 등록 및 스코프 ← “렉시컬 환경”
코드 실행 순서 관리 ← “실행 컨텍스트 스택”
(그림)
(그림)
동작
1. 실행 컨텍스트 생성
2.
렉시컬 환경
a.
환경 레코드
b.
(this 바인딩)
c.
외부환경 렉시컬 어쩌고
3.
완료 후 스택에 푸시
!! 실행 컨텍스트 스택에서 실행 컨텍스트가 제거되었다고 해서 렉시컬 환경까지 즉시 소멸하는 것 아님 (독립적 개체) → 누가 참조하고 있으면 살아있음 (가비지 컬렉션, 메모리 누수, 참조 카운팅 기억나시져 ~?)

24장. 클로저

(자스 고유 개념 x, 함수형 프로그래밍 언어에 중요 특성) 객체 지향 프로그래밍 언어의 클래스는 접근자 사용
클로저
클로저는 함수그 함수가 선언된 렉시컬 환경과의 조합이다.
중첩 함수가 상위 스코프의 식별자를 참조하고
외부함수보다 중첩함수가 더 오래 유지되는 경우
⇒ 중첩 함수는 이미 생명주기가 종료한 외부 함수의 변수를 참조 가능하다 이때 중첩함수를 클로저라고 한다 == “함수가 자유변수에 대해 닫혀있다” == “자유변수에 묶여있는 함수”
(브라우저) 최적화 : 참조하고 있는 식별자(자유변수)만 기억함
렉시컬 스코프
함수를 어디에 “정의”(호출x) 했는지에 따라 상위 스코프를 결정 = 정적 스코프
(실행 컨텍스트의 렉시컬 환경이 스코프의 실체다 !)
캡슐화
객체의 상태를 나타내는 프로퍼티와 프로퍼티를 참조하고 조작할 수 있는 동작인 메서드를 하나로 묶은 것
정보 은닉
캡슐화를 객체의 특정 프로퍼티나 메서드를 감출 목적으로 사용하는 것
this.변수명 // public let _변수명 // private
JavaScript
복사

25장. 클래스

= 문법적 설탕
클래스도 사실 “함수”임
생성자 함수
class 키워드 + 파스칼 케이스
생성자(constructor) / 프로토타입 메서드 / 정적 메서드(static)
메서드 축약 표현 (funciton 키워드 생략)
인스턴스 - new 키워드
확장(상속) - extends 키워드, super 키워드 (클래스뿐만 아니라 생성자 함수도 extends 가능)
부모 / 베이스 / 수퍼 클래스 자식 / 파생 / 서브 클래스