非存在プロパティを読み取ろうとするとエラーが発生します
通常、存在しないプロパティを読み取ろうとするとundefined
が返されます
存在しないプロパティを読み取ろうとする代わりにエラーを送出するプロキシを作成します
それにより、プログラミング上の間違いを早期に検出できます
オブジェクトtarget
を受け取り、この機能の側面を追加するプロキシを返す関数wrap(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"