在這段代碼handlet.set在ES6代理返回值
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 = '';
我有兩個問題:
1)爲什麼如果我設置的最後一行的財產狀況值在0或「 「(空字符串)我得到一個錯誤
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'status'(…)
2)在說明書中說我應該返回一個布爾值。但在我的情況下,在set()方法中,我不返回任何布爾值。在那種情況下爲什麼這個代碼有效?
這裏分配不涉及比較? – Drylozav