ホームページ > ウェブフロントエンド > jsチュートリアル > Web開発における基準値の検出方法

Web開発における基準値の検出方法

php中世界最好的语言
リリース: 2018-06-04 10:48:55
オリジナル
1567 人が閲覧しました

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

JSを使用して参照および値を渡す方法

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート