JavaScript では、変数の型を決定するために typeof 演算子がよく使用されます。typeof 演算子を使用すると、参照されるオブジェクトの型に関係なく「object」が返されるという問題が発生します。これには、オブジェクトが別のオブジェクトのインスタンスであるかどうかを検出するために、instanceof が必要です。
一般に、instanceof を使用すると、インスタンスが特定の型に属しているかどうかを判断できます。
さらに、より重要な点は、instanceof を継承関係で使用して、インスタンスがその親の型に属しているかどうかを判断できることです。
// foo が次のインスタンスであるかどうかを判断します。 Foo クラス、およびその親型のインスタンスであるかどうか function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript プロトタイプの継承
var foo = new Foo();
console.log(fooinstanceofFoo)//true
console.log(fooinstanceofAoo)//true
上記のコードはレベルを決定します継承関係の親クラス、複数レベルの継承関係では、instanceof 演算子も適用できます。
複雑な使用法の例
function Cat( ){}
Cat.prototype = {}
function Dog(){}
Dog.prototype ={}
var Dog1 = new Dog();
alert(dog1instanceofDog);//true
alert(dog1instanceofObject);//true
Dog.prototype = Cat.prototype
alert(dog1instanceofDog); //false
alert(cat の犬 1 インスタンス);//false
alert(Object の犬 1 インスタンス);//true;
var Dog2= new Dog(); instanceof Dog) ;//true
alert(dog2 instanceof Cat);//true
alert(dog2 instanceof Object);//true
Dog.prototype = null; = new Dog (); //false
alert(dog3 instanceof Object);//true
alert(dog3 instanceof Dog);//エラー
instanceof の謎を根本的に理解するには、次の 2 つの側面から始める必要があります: 1. この演算子が言語仕様でどのように定義されているか。 2. JavaScript プロトタイプ継承マシン。興味のある方は関連情報をチェックしてみてください。