JavaScript
Proxy 사용하기
citron031
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