【发布时间】:2016-03-07 08:11:03
【问题描述】:
我必须一次又一次地处理代码,例如考虑以下假设示例:
if (node.data.creatures.humans.women.number === Infinity) {
// do-someting
}
现在,问题是如果节点未定义,这个条件就会中断。同样,如果 node.data 未定义,node.data.creatures 未定义等等,它将中断。
所以我最终使用了以下类型的长条件:
if (node && node.data && node.data.creatures && node.data.creatures.humans && node.data.creatures.women && node.data.creatures.humans.women.number === Infinity) {
// do-someting
}
现在,想象一下我还必须在代码的许多其他部分中使用该 JSON 对象的一部分。
代码突然开始变得非常难看。由于我提到的第一个条件,有没有更好的方法来避免诸如“无法调用未定义的属性”之类的错误,这样代码看起来也更好。
你如何处理这种情况?
【问题讨论】:
-
新的Proxy API(相当新,支持有限)可以轻松解决这个问题:developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
-
请注意,它是一个 JavaScript 对象,而不是 JSON 对象。数据的 JSON 表示,如果您以 JSON 格式解析该数据,您将得到一个 JavaScript 对象作为结果。
标签: javascript json object sanity-check