TRAP SAFETY

가로채는 코드는 기본 동작을 정확히 돌려줘야 합니다

Proxy 트랩은 자유도가 높지만, 객체의 불변 규칙과 반환 규칙을 어기면 런타임 오류나 예측하기 어려운 동작으로 이어집니다.

재귀 방지

프록시를 다시 읽지 않기

트랩 내부에서 proxy[prop]를 호출하면 같은 트랩에 다시 들어갑니다. target과 Reflect에 위임합니다.

반환 규칙

성공 여부를 맞추기

set, deleteProperty, defineProperty는 성공 여부를 boolean으로 돌려줘야 호출부가 올바르게 판단합니다.

receiver 유지

getter의 this 보존

Reflect.get(target, prop, receiver)를 쓰면 상속과 getter가 바라보는 this를 안전하게 유지합니다.

불변 조건

객체 규칙을 속이지 않기

동결된 객체나 non-configurable 속성은 실제 상태와 다른 결과를 반환할 수 없습니다.

operation trap guard Reflect result