はじめに
この記事では、JavaScriptで、オブジェクトが特定の関数を持っているかどうかを確認する方法について書いています。
JavaScriptで関数が存在するかどうかを確認する
JavaScriptで、オブジェクトが特定の関数を持っているかどうかを確認するには、以下の2つの方法が使えます。
- 関数がnullやundefinedでないかを調べる
- typeofの戻り値を参照して'function'であるかどうかを調べる
たとえば、以下のようなチェックボックスがonclick関数を持っているかどうかを判定する場合を想定します。
<html> <body> <input type="checkbox" id="check" onclick="alert('hoge')>チェックボックス </body> </html>
nullかどうかで判定する
check要素のonclickがnullであるかどうかは以下のコードで判定できます。
if (document.getElementById("check").onclick) { document.getElementById("check").onclick(); }
以下のサイトによると、nullもundefinedもfalseを表わす。このため、上記のコードでonclick関数が存在しない場合は、onclick()の呼び出しは行われない。
typeofがfunctionかどうかで判定する
if (typeof(document.getElementById("check").onclick) == 'function') { document.getElementById("check").onclick(); }
typeof 演算子を使うと関数が存在するかどうかを確かめる事ができます。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference関数 - MDC