Web 開発で関数を検出する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-04 10:19:181394ブラウズ

今回は、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開発で元の値を検出する方法

Web開発でnull比較を回避する方法

以上がWeb 開発で関数を検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。