このコードでは
function report(message) {
console.log(message);
}
function makeLoggable(target) {
return new Proxy(target, {
get(target, property) {
report(`Reading ${property}`);
const param = target;
return param[property];
},
set(target, property, value) {
report(`Writing value ${value} to ${property}`);
const param = target;
return param[property] = value;
},
});
}
let ninja = { name: 'Jack' };
ninja = makeLoggable(ninja);
console.assert(ninja.name === 'Jack', 'Our ninja Jack');
ninja.status = '';
2 つの質問があります。
- 最後の行でプロパティのステータスを 0 または ""(空の文字列) に設定すると、エラーが発生するのはなぜですか?
キャッチされていない TypeError: 'set' on proxy: トラップがプロパティ 'status' に対して false を返しました(…)
- 仕様では、ブール値を返す必要があると書かれています。しかし、私の場合、 set() メソッドではブール値を返しません。その場合、なぜこのコードは機能するのでしょうか?