今回は、Web 開発における基準値の検出方法と、Web 開発における基準値を検出する際の注意点について説明します。以下は実際のケースです。見てみましょう。
基準値はオブジェクトとも呼ばれます。 JSではプリミティブ値以外の値はすべて参照となります。オブジェクト、配列、日付、エラーなどの組み込み参照タイプがいくつかありますが、数はそれほど多くありません。すべてのオブジェクトが「object」を返すため、typeof 演算子はこれらの参照型を決定できません。
typeof のもう 1 つの使用法は、null の型を検出するときに使用され、null に対して "object" が返されます。これは奇妙に見え、標準仕様の重大なバグであると考えられているため、プログラミング時に null の型を検出するために typeof を使用することは避けるべきです。
参照値の型を検出する最良の方法は、instanceof 演算子を使用することです。 instanceof の基本構文は次のとおりです。 value インスタンスオブ コンストラクター。
instanceof の興味深い機能は、このオブジェクトを構築するコンストラクターを検出するだけでなく、プロトタイプ チェーンも検出することです。プロトタイプ チェーンには、オブジェクトの定義に使用される継承パターンなど、多くの情報が含まれています。たとえば、デフォルトでは、すべてのオブジェクトは Object を継承するため、すべてのオブジェクトの値 instanceof Object は true を返します。このため、オブジェクトが特定のタイプであるかどうかを判断するために Object の値を使用するのは最適ではありません。
instanceof 演算子は、次のようなカスタム タイプも検出できます。
function Person (name) { this.name = name; }var me = new Person('Nicholas');console.log(me instanceof Object); // trueconsole.log(me instanceof Person); // true
JS でカスタム タイプを検出する場合、最善の方法は、instanceof 演算子を使用することです。これが唯一の方法でもあります。組み込み JS タイプ (instanceof 演算子を使用) にも同じことが当てはまります。ただし、重大な制限があります。
ブラウザのフレーム (frameA) 内のオブジェクトが別のフレーム (frameB) に渡されるとします。コンストラクター Person は両方のフレームで定義されています。フレーム A のオブジェクトがフレーム A の人物のインスタンスである場合、次の規則が当てはまります。
frameAPersonInstance instanceof frameAPerson; // trueframeAPersonInstance instanceof frameBPerson; // false
各フレームには person のコピーがあるため、2 つの定義がまったく同じであっても、そのフレーム内の person のコピー インスタンスとみなされます。この問題はカスタム型だけでなく、他の 2 つの非常に重要な組み込み型、関数と配列でも発生します。これら 2 つのタイプの場合、通常、instanceof を使用する必要はありません。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がWeb開発における基準値の検出方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。