Web Basic · Meta Programming

Proxy와 Reflect로 가로채는 객체 동작

Proxy와 Reflect는 객체 속성 접근과 설정, 호출 같은 기본 동작을 감싸 관찰하거나 제한하는 메타프로그래밍 도구다.

01

대상 선택

검증, 로깅, lazy loading처럼 접근 순간에 개입할 객체를 고른다.

02

trap 정의

get이나 set에서 읽기·쓰기 요청을 확인하고 필요한 정책을 적용한다.

03

기본 위임

Reflect.get, Reflect.set으로 원래 동작을 안전하게 호출한다.

04

불변식 확인

non-configurable 속성 같은 언어 불변식을 깨면 TypeError가 발생한다.

get
속성 읽기 가로채기 없는 값 기본값, lazy 계산, 접근 로그에 사용
무한 재귀 한계
set
속성 쓰기 검증 타입, 범위, 권한 조건을 확인
성공 여부 boolean 반환
has
in 연산자 제어 숨길 속성이나 가상 속성 처리
보안 경계로 과신 금지
Reflect
기본 동작 호출 trap 안에서 원래 의미를 유지하며 위임
receiver 전달이 중요할 수 있음

사용 이유 · 성능 · 디버깅 점검

사용 이유 일반 함수나 class setter보다 Proxy가 명확한지 확인한다.
성능 빈번한 접근 경로에 Proxy를 둘 때 비용을 측정한다.
디버깅 가로채는 동작이 숨겨져 팀원이 추적하기 어렵지 않다.
불변식 sealed/frozen 객체와 descriptor 규칙을 위반하지 않는다.