检查对象属性和调用方法的更好方法

时间:2013-01-07 18:13:11

标签: javascript typeof

(对不起,如果以前查询过,我没找到它)

我曾经检查,如果对象和方法存在且以这种方式调用

 obj && obj.method && obj.method()

但是,我怀疑在某些情况下这会给IE带来一些麻烦..

我需要使用typeof undefined/function/object进行检查吗?

 typeof obj === 'object' && typeof obj.method === 'function' && obj.method()

我想知道编码它的最安全和最清晰的样式。

1 个答案:

答案 0 :(得分:5)

为了确保您可以在名为method的对象上正确执行名为object的方法,这是最短的安全检查:

if (typeof object === 'object' && typeof object.method === 'function') {
    object.method();
}

您需要先检查对象是否存在,然后确保所需的属性是一个函数。任何其他检查都是多余的。

请注意,如果你有一些奇怪的东西,如数字0或布尔false,你试图执行method属性,但如果你有更大的问题'将属性附加到布尔和数字上。