讀取不存在的屬性時發生錯誤
通常,嘗試讀取不存在的屬性會傳回 undefined
。
建立一個代理,當嘗試讀取不存在的屬性時,它會擲回一個錯誤。
這有助於及早偵測程式錯誤。
撰寫一個函式 wrap(target)
,它會接收一個物件 target
並回傳一個代理,這個代理會加入此功能面向。
以下是它的運作方式
let user = {
name: "John"
};
function wrap(target) {
return new Proxy(target, {
/* your code */
});
}
user = wrap(user);
alert(user.name); // John
alert(user.age); // ReferenceError: Property doesn't exist: "age"
let user = {
name: "John"
};
function wrap(target) {
return new Proxy(target, {
get(target, prop, receiver) {
if (prop in target) {
return Reflect.get(target, prop, receiver);
} else {
throw new ReferenceError(`Property doesn't exist: "${prop}"`)
}
}
});
}
user = wrap(user);
alert(user.name); // John
alert(user.age); // ReferenceError: Property doesn't exist: "age"