proxy(대리)
proxy는 어떤 객체에 대해 지휘권을 뺏고 그 객체의 접근에 대한 output을 proxy 객체에 정의한 대로 return한다.
즉 기본 값은 immutability를 유지한채 값에 대한 접근을 받아낼 수 있다는 것이다.
let user = {
firstName: "LAL",
lastName: "RO",
};
user = new Proxy(user, {
get(target, prop) {
if (prop in target) {
return target[prop];
} else if (prop == "sayFullName") {
return () => {
console.log(`${target.firstName} ${target.lastName}`);
};
}
},
});
console.log(user.firstName);
user.sayFullName();
result
LAL
RO
let user = {
firstName: "LAL",
lastName: "RO",
};
user = new Proxy(user, {
get(target, prop) {
if (prop in target) {
return target[prop];
} else if (prop == "sayFullName") {
return () => {
console.log(`${target.firstName} ${target.lastName}`);
};
}
},
});
console.log(user.firstName);
user.sayFullName();
Proxy객체는 첫 인자로 빼앗을 객체, 그리고 handler를 넘겨받는다
handler는 위처럼 target은 빼앗은 user 객체를 가리키고 prop은 user의 property를 가리킨다
user.firstName을 proxy객체가 target.prop으로 빼앗게 된다.
기존 값을 전혀 건들지 않고 그 값에 대한 접근을 전부 받아줄 수 있는 것이 proxy다.