Proxy 트랩은 객체 연산별 관문이다
읽기, 쓰기, 존재 확인, 삭제는 각각 다른 trap으로 들어온다. Reflect를 함께 쓰면 가로챈 뒤 원래 의미를 보존하기 쉽다.
| 연산 | trap | Reflect 위임 | 대표 용도 |
|---|---|---|---|
| 읽기 | get | Reflect.get(target, key, receiver) | 기본값, 접근 로그, 반응성 추적 |
| 쓰기 | set | Reflect.set(target, key, value, receiver) | 값 검증, 권한 검사 |
| 존재 확인 | has | Reflect.has(target, key) | private key 숨김, 정책 적용 |
| 삭제 | deleteProperty | Reflect.deleteProperty(target, key) | 삭제 허용 범위 제한 |
trap 안에서 target이 아니라 proxy를 다시 읽으면 무한 재귀가 생기므로 위임 경로를 분명히 둔다.