[Edge]。→、
object に 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。