Proxy·Reflect는 부가 기능을 원래 연산 옆에 붙인다
검증, 로깅, 반응성은 원본 객체 의미를 대체하는 기능이 아니라 접근 순간에 붙는 부가 규칙이다.
| 단계 | 무슨 일이 일어나는가 | 확인할 것 | 실패 신호 |
|---|---|---|---|
| 1 접근 | proxy.name 또는 proxy.name = value | 외부에 proxy가 전달됐는가 | target을 직접 만짐 |
| 2 trap | handler가 연산을 받음 | 필요한 연산만 잡는가 | 숨은 동작이 너무 많음 |
| 3 Reflect | 기본 객체 동작으로 위임 | 반환값 규칙이 맞는가 | strict mode에서 TypeError |
| 4 effect | 로그, 검증, 화면 갱신 연결 | 부작용 위치가 보이는가 | 디버깅 경로가 불명확 |
메타프로그래밍은 마법처럼 보이면 실패다. 관문, 기본 동작, 부가 효과가 한눈에 나뉘어야 한다.