以下のようにProxyの第1引数に対象のインスタンス、第2引数にハンドラーを渡すことで オブジェクトをラップしたものを作ることができる。
この例だと、値の取得やセットするときの動作を変更することができる。 本来の動作をするときはReflectの対応するメソッドを呼ぶ
const getSetObj = new Proxy(obj, {
get(target, prop, receiver) {
if (prop === "value01") {
return `get:${target[prop]}`;
}
return Reflect.get(...arguments);
},
set(obj, prop, value) {
if (prop === "value02") {
obj[prop] = `set:${value}`;
return true;
}
return Reflect.set(...arguments);
},
})
Proxyなし | getのみ | setのみ | get/set | |
---|---|---|---|---|
value01 | ||||
value02 |