Proxy 객체는 다른 객체에 대한 대리자 역할을 하며, 목표 객체의 동작을 가로채어 필요 시 수정할 수 있는 패턴의 객체이다.
// 기본 생성자 이용
new Proxy(target, handler);
// revoke(취소) 가능한 Proxy 객체
new Proxy.revocable(target, handler);
Proxy : 대상 객체와 핸들러 객체를 파라미터로 받으며 핸들러를 통해 대상 객체를 제어
Target : 프록시가 감싸는 실제 객체
Handler : 프록시의 동작을 정의하는 객체, 프록시에 적용할 트랩(trap) 함수를 포함
get : 프록시가 대상 객체의 속성을 읽을 때 호출set : 프록시가 대상 객체의 속성에 값을 할당할 때 호출apply : 프록시가 대상 객체의 함수를 호출할 때 호출construct : 프록시가 대상 객체의 생성자를 호출할 때 호출deleteProperty : 프록시가 대상 객체의 속성을 삭제할 때 호출