ホームページ >ウェブフロントエンド >jsチュートリアル >Web 開発で関数を検出する方法
今回は、Web 開発で関数を検出する方法と、Web 開発で関数を検出するための 注意事項 について説明します。以下は実際のケースです。見てみましょう。
技術的に言えば、JS の関数は参照型であり、Functionコンストラクター もあり、各関数は次のようにそのインスタンスです。
function myFunc () {}// 不好的写法console.log(myFunc instanceof Function); // true// 好的写法console.log(typeof myFunc === 'function'); // trueただし、各フレームには独自のメソッドがあるため、このメソッドはフレーム間で使用できません。関数コンストラクター。幸いなことに、typeof
operatorは関数にも使用でき、「function」を返します。関数を検出する最良の方法は、フレーム全体で使用できる typeof を使用することです。
関数を検出するための typeof の使用には制限があります。 IE8 およびそれ以前のバージョンのIE ブラウザ では、typeof を使用して DOM ノード を検出する関数 (document.getElementById() など) はすべて、「関数」ではなく「オブジェクト」を返します。例:
// IE 8及其更早版本的IEconsole.log(typeof document.getElementById); // "object"console.log(typeof document.createElement); // "object"console.log(typeof document.getElementByTagName); // "object"この奇妙な現象が発生する理由は、ブラウザーの DOM 実装が異なるためです。つまり、これらの初期バージョンの IE では DOM が組み込み JS メソッドとして実装されていなかったため、組み込みの typeof 演算子がこれらの関数をオブジェクトとして認識していました。 DOM は明確に定義されているため、オブジェクト メンバーが存在する場合はそれがメソッドであることがわかっているため、開発者はよく in 演算子を使用して DOM メソッドを検出します。たとえば、次のとおりです。
// 检测DOM方法if ("querySelectorAll" in document) { images = document.querySelectorAll("img"); }このコードは、 document に querySelectorAll が定義されているかどうかを確認します (定義されている場合)。の場合は、この方法を使用します。最も理想的な方法ではありませんが、IE8 以前のブラウザで DOM メソッドの存在を検出する場合、これが最も安全な方法です。それ以外の場合は、JS 関数を検出するには typeof 演算子が最適な選択です。 この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 推奨読書:
以上がWeb 開発で関数を検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。