尝试访问不存在的属性时抛出错误

Sea*_*son 3 javascript

我有一个像这样的对象:

const foo = {
  bar: 'bar'
};
Run Code Online (Sandbox Code Playgroud)

我想修改它,以便如果有人尝试访问不存在的属性,则会抛出错误而不是返回未定义。

例如,

const baz = foo.baz;
// Error: Property 'baz' does not exist on object 'foo'
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Som*_*lik 5

通过 ECMAScript 6,您可以使用代理。

var original = {"foo": "bar"};
var proxy = new Proxy(original, {
    get: function(target, name, receiver) {
        console.log("Name of requested property: " + name);
        var rv = target[name];
        if (rv === undefined) {
          console.log("There is no such thing as " + name + ".")
          rv = "Whatever you like"
        }
        return rv;
    }
});

console.log("original.foo = " + proxy.foo);     // "bar"
console.log("proxy.foo = " + proxy.whatever);   // "Whatever you like"
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/u5b3wx9w/