当Object属性不存在时触发错误

时间:2015-08-25 21:01:09

标签: javascript object properties error-handling

别名标题:对象属性的严格模式

我正在处理错误管理器,我希望这是非常严格的。 假设您正在调用一个不存在的属性,这通常被解释为未定义,相反,它应该抛出一个错误,例如:

var obj = {};

obj.PI; //throw Error instead of undefined.

预期结果:

  

未捕获的ReferenceError:未定义obj.PI

我想在调用任何不存在的属性时出现此错误,不一定是PI

1 个答案:

答案 0 :(得分:1)

首先,如果你知道要捕获的特定属性,那么你可以为这些属性提供一个getter并从getter中抛出一个错误。

如果你不知道具体的属性并想要一个全能的所有未定义的属性访问,那么你将需要ES6 proxy support,这还没有广泛使用(似乎在某些版本的Firefox中)在Microsoft Edge中,但不在Chrome中。因此,除非这是一个Firefox或特定于Edge的项目,否则不支持您所谓的跨浏览器,因为这不是Javascript的ES5级功能。

仅供参考,使用代理,您将感兴趣的是handler.get() method

您可以在此处查看当前的ES6代理支持级别:https://kangax.github.io/compat-table/es6/