别名标题:对象属性的严格模式
我正在处理错误管理器,我希望这是非常严格的。 假设您正在调用一个不存在的属性,这通常被解释为未定义,相反,它应该抛出一个错误,例如:
var obj = {};
obj.PI; //throw Error instead of undefined.
预期结果:
未捕获的ReferenceError:未定义obj.PI
我想在调用任何不存在的属性时出现此错误,不一定是PI
答案 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/