ホームページ ウェブフロントエンド jsチュートリアル JavaScript が演算子とプロパティを使用してオブジェクトの種類を決定する方法の概要

JavaScript が演算子とプロパティを使用してオブジェクトの種類を決定する方法の概要

Jul 26, 2017 am 11:52 AM
javascript js オペレーター

JavaScript でオブジェクトの型を検出する演算子には、typeof、instanceof、およびオブジェクトのコンストラクター属性が含まれます:

1) typeof 演算子 typeof は単項演算子であり、返される結果は、オブジェクトの型を説明する文字列です。オペランド。 例: 「数値」、「文字列」、「ブール値」、「オブジェクト」、「関数」、「未定義」 (変数が存在するかどうかを判断するために使用できます)。 ただし、typeof の機能は限られています。Date 型と RegExp 型に対しては「オブジェクト」を返します。例:


typeof {}; // "object" 
typeof []; // "object" 
typeof new Date(); // "object"
ログイン後にコピー

したがって、オブジェクトとプリミティブ型を区別する場合にのみ役立ちます。あるオブジェクト タイプを別のオブジェクト タイプと区別するには、他の方法を使用する必要があります。例:instanceof 演算子またはオブジェクトのコンストラクター属性。

2) 演算子のインスタンス。 instanceof 演算子では、左側のオペランドがオブジェクトであり、右側のオペランドがオブジェクト クラスの名前またはコンストラクターである必要があります。 object がクラスまたはコンストラクターのインスタンスである場合、instanceof 演算子は true を返します。 object が指定されたクラスまたは関数のインスタンスではない場合、または object が null の場合は false を返します。例:


[] instanceof Array; // true 
[] instanceof Object; // true 
[] instanceof RegExp; // false 
new Date instanceof Date; // true
ログイン後にコピー

したがって、instanceof 演算子を使用して、オブジェクトが配列型であるかどうかを判断できます:


function isArray(arr){ 
  return arr instanceof Array; 
}
ログイン後にコピー

3) コンストラクター属性。 JavaScript では、各オブジェクトにはコンストラクター属性があり、オブジェクトを初期化するコンストラクターを参照して、不明なオブジェクトの種類を決定するためによく使用されます。たとえば、必要な値が与えられた場合、typeof 演算子を使用して、それがプリミティブ値であるかオブジェクトであるかを判断します。オブジェクトの場合は、コンストラクター属性を使用してその型を決定できます。したがって、配列を決定する関数は次のように書くこともできます:


function isArray(arr){ 
  return typeof arr == "object" && arr.constructor == Array; 
}
ログイン後にコピー

多くの場合、オブジェクトのインスタンスオブ演算子またはコンストラクタープロパティを使用して、オブジェクトが配列であるかどうかを検出できます。たとえば、多くの JavaScript フレームワークは、これら 2 つのメソッドを使用して、オブジェクトが配列型であるかどうかを判断します。 ただし、クロスフレーム ページ内の配列を検出すると失敗します。その理由は、異なるフレーム (iframe) で作成された配列がプロトタイプのプロパティを相互に共有しないためです。例:


<script>
window.onload=function(){
var iframe_arr=new window.frames[0].Array;
alert(iframe_arr instanceof Array); // false
alert(iframe_arr.constructor == Array); // false
}
</script>
ログイン後にコピー

プロトタイプ チェーン全体で toString() メソッドを呼び出す、Ajaxian の正確な検出メソッドを確認しました: Object.prototype.toString()。上記のクロスフレームワークの問題を解決できます。 Object.prototype.toString(o) が実行されると、次の手順が実行されます。 1) オブジェクト o のクラス属性を取得します。 2) 接続文字列: "[object "+result(1)+"]" 3) return result(2) 例:

Object.prototype.toString.call([]); // Return "[object Array] "
Object.prototype.toString.call(/reg/ig); // Return "[object RegExp]"

このようにして、オブジェクトが配列であるかどうかを判断する堅牢な関数を書くことができます:


function isArray(arr){
  return Object.prototype.toString.call(arr) === "[object Array]";
}
ログイン後にコピー

このメソッドは多くの海外の JavaScript マスターによって認識されており、次期 jQuery 1.3 で配列を検出するために使用されます。 prototype.js の管理者は、オブジェクトの型名を取得するために使用される次の関数を作成しました


/**
 * Returns internal [[Class]] property of an object
 *
 * Ecma-262, 15.2.4.2
 * Object.prototype.toString( )
 *
 * When the toString method is called, the following steps are taken: 
 * 1. Get the [[Class]] property of this object. 
 * 2. Compute a string value by concatenating the three strings "[object ", Result (1), and "]". 
 * 3. Return Result (2).
 *
 * __getClass(5); // => "Number"
 * __getClass({}); // => "Object"
 * __getClass(/foo/); // => "RegExp"
 * __getClass(&#39;&#39;); // => "String"
 * __getClass(true); // => "Boolean"
 * __getClass([]); // => "Array"
 * __getClass(undefined); // => "Window"
 * __getClass(Element); // => "Constructor"
 *
 */
function __getClass(object){
  return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
};
ログイン後にコピー

それを拡張して、さまざまなオブジェクト型を検出します:


var is ={
  types : ["Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window", "HTMLDocument"]
};
for(var i = 0, c; c = is.types[i ++ ]; ){
  is[c] = (function(type){
    return function(obj){
      return Object.prototype.toString.call(obj) == "[object " + type + "]";
    }
  )(c);
}
alert(is.Array([])); // true
alert(is.Date(new Date)); // true
alert(is.RegExp(/reg/ig)); // true
ログイン後にコピー

以上がJavaScript が演算子とプロパティを使用してオブジェクトの種類を決定する方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

推奨: 優れた JS オープンソースの顔検出および認識プロジェクト 推奨: 優れた JS オープンソースの顔検出および認識プロジェクト Apr 03, 2024 am 11:55 AM

顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

C言語における+=演算子の意味と使い方の解析 C言語における+=演算子の意味と使い方の解析 Apr 03, 2024 pm 02:27 PM

+= 演算子は、左オペランドの値を右オペランドの値に加算し、その結果を左オペランドに割り当てるために使用されます。これは数値型に適しており、左オペランドは書き込み可能である必要があります。

PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする Dec 18, 2023 pm 03:39 PM

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

Python 構文のマインド マップ: コード構造の深い理解 Python 構文のマインド マップ: コード構造の深い理解 Feb 21, 2024 am 09:00 AM

Pythonはそのシンプルで読みやすい構文から幅広い分野で広く使われています。プログラミングの効率を向上させ、コードがどのように機能するかを深く理解するためには、Python 構文の基本構造をマスターすることが重要です。この目的を達成するために、この記事では、Python 構文のさまざまな側面を詳しく説明した包括的なマインド マップを提供します。変数とデータ型 変数は、Python でデータを保存するために使用されるコンテナです。マインド マップには、整数、浮動小数点数、文字列、ブール値、リストなどの一般的な Python データ型が表示されます。各データ型には独自の特性と操作方法があります。演算子 演算子は、データ型に対してさまざまな操作を実行するために使用されます。マインド マップは、算術演算子、比率など、Python のさまざまな演算子の種類をカバーしています。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

jsとvueの関係 jsとvueの関係 Mar 11, 2024 pm 05:21 PM

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

Python オペレーター: 初心者からマスターまでの究極のガイド Python オペレーター: 初心者からマスターまでの究極のガイド Mar 11, 2024 am 09:13 AM

Python 演算子の概要 演算子は、2 つ以上のオペランド間の演算を実行するために使用される特殊な記号またはキーワードです。 Python には、基本的な数学演算から複雑なデータ操作まで、幅広い用途をカバーするさまざまな演算子が用意されています。数学演算子 数学演算子は、一般的な数学演算を実行するために使用されます。演算子の演算例 + 加算 a + b - 減算 a-b * 乗算 a * b / 除算 a / b % モジュロ演算 (剰余を取る) a % b ** べき乗演算 a ** b // 整数除算 (剰余) a//b 論理演算子 論理演算子は、ブール値を連結し、条件を評価するために使用されます。これらには、演算子の演算例と、論理演算と aandbor 論理演算、または aorbnot 論理演算の not not 比較演算が含まれます。

See all articles