使用对象的 属性 时如何抛出错误

How to throw an error when using a property of an object

我希望 JS 在使用未正确实例化的对象时抛出错误。

我已经试过了:

var person = function () { throw new Error('Person not instantiated!'); };
...
var x = person.age; //should throw an error when person isn't overwritten

但它并没有像我想要的那样抛出错误(仅当我输入 person(); 时)。

这里的问题是我把这个对象赋予了很多方法,不想对所有出现的地方都进行错误处理。有没有办法在读取对象的 属性 时抛出错误?

有没有办法在读取对象的 属性 时抛出错误?

是的,您可以使用抛出错误的函数修补 属性 getter

var person = {};
Object.defineProperty(person, 'age', {
  get: function () { throw new Error('Person not instantiated!') }, 
});

var x = person.age;

或者您也可以将对象替换为 Proxy,这样您就可以覆盖所有属性的 getter:

var person = new Proxy({}, {
  get(target, name) {
    throw new Error('Person not instantiated!');
  }
});

var x = person.age;
var y = person.name;

但这一切都是反模式。是我反对的建议。