(对不起,如果先前查询过,我没找到它)
我曾经检查过对象和方法是否存在并以这种方式调用它:
obj && obj.method && obj.method()
Run Code Online (Sandbox Code Playgroud)
但是,我怀疑在某些情况下这会给IE带来一些麻烦..
我需要使用它typeof undefined/function/object 吗?
typeof obj === 'object' && typeof obj.method === 'function' && obj.method()
Run Code Online (Sandbox Code Playgroud)
我想知道什么是最安全和最清晰的代码风格.
为了确保您可以正确执行在名为method的对象上命名的方法object,这是最短的安全检查:
if (typeof object === 'object' && typeof object.method === 'function') {
object.method();
}
Run Code Online (Sandbox Code Playgroud)
您需要首先检查对象是否存在,然后确保所需的属性是一个函数.任何其他检查都是多余的.
请注意,如果您有一些奇怪的东西,比如数字0或布尔值false,并且method您正在尝试执行该属性,但如果您将属性附加到布尔值和数字,则可能会遇到更大的问题.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |