[解決済み] JavaScriptのinstanceof演算子とは何ですか?
質問
その
instanceof
というキーワードは、JavaScriptがオブジェクト指向のプログラミング言語ではないと思われがちなので、最初に遭遇したときはかなり混乱するかもしれません。
- 何ですか?
- どのような問題を解決するのですか?
- どのような場合に適切で、どのような場合に適切でないか?
どのように解決するのですか?
インスタンスオブ
左辺(LHS)オペランドは、クラスの実際のコンストラクタである右辺(RHS)オペランドに対して、テストされる実際のオブジェクトです。基本的な定義は以下の通りです。
現在のオブジェクトをチェックし、指定されたオブジェクト型のオブジェクトであれば真を返します。
以下は 良い例 から直接引用した例です。 Mozillaの開発者向けサイト :
var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral"; //no type specified
color2 instanceof String; // returns false (color2 is not a String object)
特筆すべきは
instanceof
は、そのオブジェクトがクラスのプロトタイプを継承している場合に true と評価されます。
var p = new Person("Jon");
p instanceof Person
それは
p instanceof Person
は真なので
p
を継承しています。
Person.prototype
.
OPのリクエストに応えて
サンプルコードと説明のある小さな例を追加しました。変数を宣言するとき、特定の型を与えます。
例えば
int i;
float f;
Customer c;
上記では、いくつかの変数、すなわち
i
,
f
および
c
. タイプは
integer
,
float
と、ユーザー定義の
Customer
というデータ型があります。上記のような型は、JavaScriptに限らず、どの言語でもあり得ることです。 しかし、JavaScriptでは、変数を宣言するときに、明示的に型を定義しません。
var x
xは数値、文字列、ユーザー定義のデータ型などです。では
instanceof
は、オブジェクトが指定された型であるかどうかをチェックします。
Customer
オブジェクトを作成することができます。
var c = new Customer();
c instanceof Customer; //Returns true as c is just a customer
c instanceof String; //Returns false as c is not a string, it's a customer silly!
上記で、私たちは
c
という型が宣言されています。
Customer
. これをnewして、それが型であるかどうかをチェックしました。
Customer
であるかどうか。確かに、それは真を返します。次に、まだ
Customer
オブジェクトであるかどうかをチェックします。
String
. いや、間違いなく
String
を新たに作成しました。
Customer
オブジェクトではなく
String
オブジェクトを生成します。この場合、falseを返します。
本当に簡単ですね。
関連
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
vue ディレクティブ v-html と v-text
-
Vueのクラススタイルの使い方の詳細
-
Vueでルートネスティングを実装する例
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ