JavaScript

instanceof


編集:2023.01.26 by T.A.

[Edge]。→

objectconstructor のプロパティ(プロトタイプ)を持っているかどうかを返します。

object instanceof constructor
object 確認するオブジェクト。
constructor object に対して確認を行う関数名、オブジェクト。
演算結果

論理値。true: インスタンスである。false: そうではない。

N=123;
D=N instanceof Number;  //=[boolean]:false
N=new Number(123);
D=N instanceof Number;  //=[boolean]:true
A={p:10};
D=A instanceof Object;  //=[boolean]:true
B=A;
D=B instanceof A;  //エラー発生:Right-hand side of 'instanceof' is not callable
function C(){}
D=C instanceof Function;  //=[boolean]:true

function C(){}
F=new C();
D=F instanceof C;  //=[boolean]:true
D=F instanceof Object;  //=[boolean]:true
A={p:10};
Object.setPrototypeOf(F, A);  //Fに新しいプロパティを設定。
D=F instanceof C;  //=[boolean]:false。プロパティが一致しない?。
Object.setPrototypeOf(C, A);  //Cに新しいプロパティを設定。
D=F instanceof C;  //=[boolean]:false。あくまでも違うようだ。
D=F.p;  //=[number]:10

function C(){}
F=new C();
D=F instanceof C;  //=[boolean]:true
F.p=10;  //プロパティ追加。
D=F instanceof C;  //=[boolean]:true。プロトタイプではないから一致?。

function C(p){
  this.pro=p;
}
F=new C();
D=F instanceof C;  //=[boolean]:true
F.pro=10;  //値を入れる。
D=F instanceof C;  //=[boolean]:true。値が変わってもOK。

Object.setPrototypeOf()


テスト