【发布时间】:2015-02-12 21:14:17
【问题描述】:
有更好的方法吗?
如果我这样做:
if(typeof someObject[bar][foo] == "function"){
// Do something
}
如果bar 不存在,我得到一个someObject[bar][foo] is not an object 错误,它指的是someObject[bar]。这意味着代码假定您知道someObj[bar] 已定义。所以我的解决方案是这样的:
if(typeof someObj[bar] === "object"){
if(typeof someObject[bar][foo] == "function"){
// Do something
}
}
如果我们想努力减少代码行并制作好的、干净、可读的代码,那么看起来就显得多余和丑陋了。有没有更好的方法来做到这一点而不必经过两个if 点?我知道这没什么大不了的,但我想知道是否有更好的方法。
【问题讨论】:
-
你试过
if (someObj.hasOwnProperty(bar)){}吗?没有附加条件......当然 -
检查这个 fddle jsfiddle.net/4rjjxdzh
-
@PashaB,这就是我的意思:jsfiddle.net/powerphillg5/mobsrut5看日志。
-
@TimVermaelen 确实如此,但之后您是否还需要检查该函数是否存在于该属性中?我的意思是,你会假设
typeof会返回"undefined"如果它应该存在的方法和属性都不存在你知道吗? -
@FelipeTadeo 你在寻找类似
if(someObj[bar] && typeof obj[bar][foo] === 'function')的东西吗?第一个条件检查元素不是undefined,null,0... 如果满足,则检查另一部分以查看foo是否是一个函数。
标签: javascript object if-statement typeof