피드로 돌아가기
Understanding the `this` Keyword in JavaScript
Dev.toDev.to
Frontend

JavaScript Execution Context 기반 this 바인딩 메커니즘 분석

Understanding the `this` Keyword in JavaScript

Pratham2026년 5월 10일12beginner

Context

JavaScript의 this 키워드는 선언 위치가 아닌 런타임 호출 시점에 결정되는 동적 바인딩 특성을 가짐. 이러한 특성으로 인해 함수가 객체 메서드로 호출될 때와 독립적으로 호출될 때의 컨텍스트 불일치 문제가 빈번히 발생함.

Technical Solution

  • Caller-based Binding: 함수 호출 시점의 호출 객체를 this로 할당하는 런타임 결정 구조 설계
  • Global Scope Resolution: 호출 객체가 없는 독립 함수 실행 시 Browser 환경의 Window 객체 혹은 Node.js의 exports 객체로 폴백하는 메커니즘 적용
  • Strict Mode Isolation: "use strict" 선언을 통한 기본 Global 바인딩 제거 및 undefined 할당으로 런타임 에러 조기 발견 유도
  • Lexical Scope Inheritance: Arrow Function 도입을 통해 자체 this 바인딩을 제거하고 상위 스코프의 컨텍스트를 그대로 계승하는 구조 구현
  • Context Preservation: 메서드 추출 시 발생하는 컨텍스트 유실 방지를 위해 Arrow Function 또는 바인딩 전략 활용

1. 객체 메서드 정의 시 내부 콜백 함수는 Arrow Function을 사용하여 상위 객체 컨텍스트 유지 여부 확인

2. 독립 함수 호출 시 Strict Mode 적용을 통해 의도치 않은 Global 객체 오염 방지

3. 객체 메서드를 변수에 할당하여 호출할 경우 컨텍스트 유실 가능성을 검토하고 바인딩 전략 수립

원문 읽기