[javascript] 실행 컨텍스트와 프로토타입 체인(prototype chain)의 관계는 무엇인가?
자바스크립트에서 실행 컨텍스트와 프로토타입 체인은 밀접한 관계를 가지고 있습니다.
실행 컨텍스트 (Execution Context)
자바스크립트의 실행 컨텍스트는 코드가 실행되고 변수 및 함수의 scope(범위)를 관리하는데 사용됩니다.
- 실행 컨텍스트는
활성화 레코드(activation record/variable object)
,스코프 체인(scope chain)
,this
의 값 등을 포함합니다. - 전역 코드, 함수 안의 로컬 코드 등에 해당합니다.
프로토타입 체인 (Prototype Chain)
프로토타입은 객체 간의 상속을 구현하기 위한 메커니즘을 말합니다.
- 모든 객체(함수도 포함)는 자신의 부모 역할을 하는 프로토타입 객체를 가지고 있습니다.
- 프로토타입 체인은 객체의 부모 객체를 따라가면서 상위 객체의 프로퍼티들을 검색하는 프로세스를 나타냅니다.
실행 컨텍스트와 프로토타입 체인의 관계
실행 컨텍스트는 스코프 체인을 통해 해당 함수의 스코프에 포함된 변수와 함수에 접근하고, 이러한 스코프 체인은 프로토타입 체인과 유사한 동작을 합니다.
- 함수에서 변수나 함수를 찾을 때, 실행 컨텍스트는 스코프 체인을 통해 해당 변수나 함수를 찾게 됩니다.
- 만약 스코프 체인 상에서 해당 변수나 함수를 찾지 못하면, 자바스크립트 엔진은 프로토타입 체인을 통해 상위 스코프나 프로토타입 객체로 이동하여 검색합니다.
정리하자면, 실행 컨텍스트의 스코프 체인과 프로토타입 체인은 모두 변수와 함수를 검색하는 메커니즘으로, 이러한 유사성 때문에 실행 컨텍스트와 프로토타입 체인은 밀접한 관계를 가지고 있습니다.
참고문헌:
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
- https://poiemaweb.com/js-execution-context