π Reference
π Chapter
β£
new Proxy(target, handler)
ꡬ문μΌλ‘ μμ±νλ€.
target
handler
get
, set
, apply
λ± λ€μν νΈλ©(trap) λ©μλλ₯Ό ν¬ν¨ν μ μλ€.const user = {
name: "Jane Doe",
age: 30
};
const handler = {
// 'get' νΈλ©: μμ± μ½κΈ° μμ
κ°λ‘μ±κΈ°
get: function(target, prop, receiver) {
console.log(`Getting property: ${prop}`);
return target[prop];
},
// 'set' νΈλ©: μμ± ν λΉ μμ
κ°λ‘μ±κΈ°
set: function(target, prop, value) {
if (prop === 'age' && typeof value !== 'number') {
throw new TypeError("Age must be a number!");
}
console.log(`Setting property: ${prop} to ${value}`);
target[prop] = value;
return true; // μ±κ³΅μ μΌλ‘ ν λΉνμμ λνλ
}
};
const userProxy = new Proxy(user, handler);
console.log(userProxy.name); // "Getting property: name" μΆλ ₯ ν "Jane Doe" λ°ν
userProxy.age = 31; // "Setting property: age to 31" μΆλ ₯
// userProxy.age = "thirty-two"; // TypeError λ°μ