使用对象的 属性 时如何抛出错误
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;
但这一切都是反模式。是我反对的建议。
我希望 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;
但这一切都是反模式。是我反对的建议。