(对不起,如果以前查询过,我没找到它)
我曾经检查,如果对象和方法存在且以这种方式调用:
obj && obj.method && obj.method()
但是,我怀疑在某些情况下这会给IE带来一些麻烦..
我需要使用typeof undefined/function/object
进行检查吗?
typeof obj === 'object' && typeof obj.method === 'function' && obj.method()
我想知道编码它的最安全和最清晰的样式。
答案 0 :(得分:5)
为了确保您可以在名为method
的对象上正确执行名为object
的方法,这是最短的安全检查:
if (typeof object === 'object' && typeof object.method === 'function') {
object.method();
}
您需要先检查对象是否存在,然后确保所需的属性是一个函数。任何其他检查都是多余的。
请注意,如果你有一些奇怪的东西,如数字0
或布尔false
,你试图执行method
属性,但如果你有更大的问题'将属性附加到布尔和数字上。