We want to make this open-source project available for people all around the world.

Help to translate the content of this tutorial to your language!

BuyEPUB/PDF
Share
back to the lesson

Error on reading non-existent property

Usually, an attempt to read a non-existent property returns undefined.

Create a proxy that throws an error for an attempt to read of a non-existent property instead.

That can help to detect programming mistakes early.

Write a function wrap(target) that takes an object target and return a proxy that adds this functionality aspect.

That’s how it should work:

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"

AltStyle によって変換されたページ (->オリジナル) /