有没有办法拦截类型错误并返回自己的值? 考虑场景: 我有自己的lib,如果undefined或null返回一些值
if (typeof value === 'undefined' || value === null) return Nothing;
所以,如果你使用这个
mylib(null) // -> Nothing
mylib(1) // -> Just(1)
这一切都很好,但是如果我使用像这样的不存在的属性传递对象
var a = {};
a.b = {};
mylib(a.b.c.d) // -> c is not an Object and does not have property d
// Uncaught TypeError: Cannot read property 'd' of undefined
所以我想要拦截类型错误并返回Nothing而我想在本机js中执行它并且我不想传入属性来检入数组或分隔字符串或其他东西。到目前为止,我还没有办法做到这一点。
我看到了一些重新定义window.onerror()的例子,但想知道是否有优雅的方法可以动态防止类型错误。
答案 0 :(得分:0)
使用ES6,您可以使用ES6Proxies来实现这一目标。 如果您只想将逻辑应用于少数几个objets,这将非常有用。
请注意,大多数浏览器都不支持ES6代理,但您可以尝试使用某些填充程序。
不幸的是,你无法在全球范围内处理它:
您可以为您的图书馆做的唯一选择是做这样的事情:
Option.getProperty(object, 'a.b.c.d') // returns Nothing or Just instance