3

(以前に質問されていたらすみません、見つけられませんでした)

オブジェクトとメソッドが存在するかどうかを確認し、次のように呼び出していました。

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

しかし、これがIEで問題を引き起こしている場合があると思います..

を使用して確認する必要がありtypeof undefined/function/object ますか?

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

それをコーディングするための最も安全で明確なスタイルは何かを知りたいです。

4

1 に答える 1

5

methodという名前のオブジェクトで という名前のメソッドを適切に実行できることを確認するにobjectは、これが最短の安全なチェックです。

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

最初にオブジェクトが存在することを確認してから、必要なプロパティが関数であることを確認する必要があります。他のチェックは冗長です。

実行しようとしているプロパティを持つ数値0やブール値などの奇妙なものがある場合、これは崩壊することに注意してください。ただし、ブール値と数値にプロパティを追加している場合は、より大きな問題が発生する可能性があります。falsemethod

于 2013-01-07T18:18:21.587 に答える