JavaScriptにおけるtypeof演算子とinstanceof演算子の使用に関するディスカッション_基礎知識
JavaScript コードを作成する場合、typeof と instanceof の 2 つの演算子が時々使用され、必ず使用する必要があります。しかし!これらの演算子を使用すると、望ましい結果を直接得るのは常に困難です。「これら 2 つの演算子は、おそらく JavaScript の最大の設計上の欠陥です。なぜなら、これらの演算子から望ましい結果を得るのはほぼ不可能だからです。」
typeof
説明: typeof は式のデータ型の文字列を返し、戻り結果は数値、ブール値、文字列、オブジェクト、未定義、関数を含む js の基本データ型です。
説明文を見る限り、問題はなさそうです。
次のコードは数値変数を書き込み、typeof の後の結果は「number」です。
var a = 1; .log( typeof(a)); //=>number
console.log(typeof(a)); //=>object
でも!問題は、typeof が呼び出されるので、値を使用して直接作成されたか、型コンストラクターを使用して作成されたかに関係なく、変数の型を正確に返さなければならないことです。他に何に使えばいいの?
つまり:
var b = new Number(1);
正確な型情報は、変数の内部プロパティ [[Class]] の値に格納されます。これは、Object.prototype で定義されたメソッド toString を使用して取得されます。
型情報の取得:
var b = new Number(1);
console.log(Object.prototype.toString. call(b ));
出力:
これはすでに非常に簡単ではないでしょうか。少し処理して直接の結果を取得してみましょう:
console.log(Object.prototype.toString.call(b).スライス(8,-1));
出力:
数値
これは望ましい結果です。
より良く使用するために、変数が特定の型であるかどうかを判断するメソッドをカプセル化します。
まず、それらの typeof 出力を見てみましょう。
コードをコピーします
console.log("a2 の typeof:" typeof(a2)); console.log(" b1 の typeof:" typeof(b1));
console.log("b2 の typeof:" typeof(b2));
console.log("c1 の typeof:" typeof(c1)) ;
console .log("c2 の typeof:" typeof(c2));
出力:
a1 の typeof:number
a2 の typeof:object
b1 の typeof:string
b2 の typeof :object
c1 の typeof:object
c2 の typeof:object
The newly created function we use is:
console.log("a1 is Number:" is(a1,"Number"));
console.log("a2 is Number:" is(a2,"Number"));
console.log( "b1 is String:" is(b1,"String"));
console.log("b2 is String:" is(b2,"String"));
console.log("c1 is Array :" is(c1,"Array"));
console.log("c2 is Array:" is(c2,"Array"));
Output:
a1 is Number:true
a2 is Number:true
b1 is String:true
b2 is String:true
c1 is Array:true
c2 is Array:true
Note: typeof It is not useless. The actual use is to detect whether a variable has been defined or assigned a value.
instanceof
Description: Determine whether an object is a certain data type, or whether a variable is an instance of an object.
The instanceof operator is also powerless when used to compare two built-in type variables, and will also be dissatisfied with the result.
console.log("abc" instanceof String); / / false
console.log("abc" instanceof Object); // false
console.log(new String("abc") instanceof String); // true
console.log(new String( "abc") instanceof Object); // true
Reflects the relationship accurately only when comparing custom objects.
function Person() {}
function Man( ) {}
Man.prototype = new Person();
console.log(new Man() instanceof Man); // true
console.log(new Man() instanceof Person); // true

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











instanceof の機能は、オブジェクトが特定のクラスのインスタンスであるかどうか、またはオブジェクトが特定のインターフェイスを実装しているかどうかを判断することです。 instanceof は、オブジェクトが指定されたタイプであるかどうかを確認するために使用される演算子です。 instanceof 演算子の使用シナリオ: 1. 型チェック: オブジェクトの特定の型を判断し、異なる型に応じて異なるロジックを実行するために使用できます; 2. インターフェイスの判断: オブジェクトがインターフェイスを実装しているかどうかを判断するために使用できます。 、オブジェクトがインターフェイスを実装しているかどうかを判断するため、インターフェイスの定義は対応するメソッドを呼び出します; 3. 下方変換など。

「!」記号を使用するほとんどの Linux コマンドの使用法は、シェルによって異なる場合があります。私が提供する例は通常 bash シェルで使用されますが、他の一部の Linux シェルでは実装が異なる場合や、「!」記号の特定の使用をまったくサポートしていない場合があります。 Linux コマンドにおける「!」記号の驚くべき謎に満ちた使い方を見てみましょう。 1. コマンド番号を使用して履歴からコマンドを実行する あまり知られていないかもしれませんが、コマンド履歴 (すでに実行されたコマンド) からコマンドを実行できます。まず、「history」コマンドを実行してコマンドの番号を見つけます。 linuxmi@linuxmi:~/www.linuxmi.

モジュロ等号演算子 (%) は、PHP で非常に一般的に使用される演算子であり、2 つの数値を除算した余りを計算するために使用されます。この記事では、モジュラー等号演算子の使用法を詳しく説明し、読者の理解を深めるために具体的なコード例を示します。まず、簡単な例を見てみましょう。ある数値を別の数値で割った余りを計算する必要があるとします。 $a=10;$b=3;$remainder=$a%$b;echo"10 割った 3は: &

Java では、instanceof は、オブジェクトがクラスのインスタンスであるか、クラスのサブクラスのインスタンスであるかをチェックするために使用される二項演算子です。その構文は「オブジェクト インスタンスオブ クラス」です。ここで、オブジェクトはオブジェクト引用符、クラスはクラスです名前またはインターフェイス名。

SQL での演算子の使用法: 1. 単一列のマッチング、IN 演算子を使用して列内の複数の値を一致させることができます; 2. 複数列のマッチング、IN 演算子を使用して複数の列の値を一致させることもできます。 3. サブクエリ。IN 演算子は、メイン クエリ内にネストされたクエリ ステートメントであるサブクエリでも使用できます。

以前の PHP バージョンでは、変数を定義していない場合、それを直接使用すると、「未定義の変数」エラーが発生しました。ただし、PHP7 では、いくつかの新機能を使用してこの問題を回避できます。これらの新機能には、?-> と ?? という 2 つの新しい演算子が含まれています。それぞれ 2 つの異なるタイプの問題を解決できます。

概念 1. この演算子は、オブジェクトを操作し、オブジェクトが特定のタイプ (タイプまたはインターフェース・タイプ) であるかどうかを確認するために使用されます。形式 2. 計算機の左側の変数が指すオブジェクトが演算子の右側のクラスまたはインターフェイスのオブジェクトである場合、結果は true になります。 (Objectreferencevariable)instanceof(class/interfacetype) インスタンス packagecom.verify_instanceof;publicclassTestInstanceOf{publicstaticvoidmain(String[]args){//次の 4 行のコードは、instanceof を証明するために使用されます。

この演算子はオブジェクト参照変数にのみ使用されます。この演算子は、オブジェクトが特定の型 (クラス型またはインターフェイス型) に属しているかどうかを確認します。 instanceof 演算子は -(Objectreferencevariable)instanceof(class/interfacetype) のように記述されます。演算子の左側の変数によって参照されるオブジェクトが右側のクラス/インターフェイス型の IS-A チェックに合格した場合、結果は次のようになります。本当だ。以下は例です - ライブ デモンストレーションの例 publicclassTest{ publicstaticvoidmain(Stringargs[]){&nbs
