读取不存在的属性时出错
通常,尝试读取不存在的属性会返回 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"