-
Proxy 사용하기JavaScript 2023. 5. 12. 23:58
proxy를 사용하면 기존 이벤트를 가로채 다른 함수를 실행할 수 있다.
간단한 예를 보면, 다음과 같다.
const target = { a: "a_word", b: "b_word", } const handler = { get(target, prop, receiver) { switch(prop){ case 'a': return "A"; case 'b': return "B"; } } } const proxy = new Proxy(target, handler); console.log(proxy.a, proxy.b);기존의 객체를 가로채어 다른 값을 return하게 만든다.
handler가 기존의 실행을 가로채어 실행되는 함수로, switch나 if문 등을 사용하여 특정 key값의 객체값만 다른 값으로 return하게 할 수 있다.
이와 같은 컨셉을 Reflect를 사용하여 다음과 같이 더 편하게 표현할 수도 있다.
const target = { a: "a_word", b: "b_word", } const handler = { get(target, prop, receiver) { if(prop === 'a') { return "AAA"; } return Reflect.get(...arguments); } } const proxy = new Proxy(target, handler); console.log(proxy.a, proxy.b);Relect는 Proxy 생성을 간소화하는 내장객체이다.
🍋 Proxy의 가장 대표적인 쓰임새는 Observable 설계이다. 구독자를 설정(get)하고, 구독자에게 값의 변경(set)을 알릴 수 있다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Proxy - JavaScript | MDN
Proxy 객체를 사용하면 한 객체에 대한 기본 작업을 가로채고 재정의하는 프록시를 만들 수 있습니다.
developer.mozilla.org
https://ko.javascript.info/proxy
Proxy와 Reflect
ko.javascript.info
'JavaScript' 카테고리의 다른 글
선언식 함수와 화살표 함수에서의 this (0) 2023.06.08 Yarn berry 사용하기 (0) 2023.05.13 HTML 화면 스크린샷 찍기 (html2canvas) (0) 2023.05.04 Modal 화면 구현 (Modal 외부 클릭 시 Modal 꺼짐) (0) 2023.05.02 이벤트 버블링(Event Bubbling) 및 이벤트 캡처링(Event Capture)에 대해서 (1) 2023.04.26