instanceof運算符可以用來判斷某個構造函數的prototype屬性是否存在另外一個要檢測對象的原型鏈上。
實例一:普遍用法
A instanceof B :檢測B.prototype是否存在於參數A的原型鏈上.
function Ben() { } var ben = new Ben(); console.log(ben instanceof Ben);//true
實例二:繼承中判斷實例是否屬於它的父類
function Ben_parent() {} function Ben_son() {} Ben_son.prototype = new Ben_parent();//原型繼承 var ben_son = new Ben_son(); console.log(ben_son instanceof Ben_son);//true console.log(ben_son instanceof Ben_parent);//true
實例三:表明String對象和Date對象都屬於Object類型
下面的代碼使用了instanceof來證明:String和Date對象同時也屬於Object類型。
var simpleStr = "This is a simple string"; var myString = new String(); var newStr = new String("String created with constructor"); var myDate = new Date(); var myObj = {}; simpleStr instanceof String; // returns false, 檢查原型鏈會找到 undefined myString instanceof String; // returns true newStr instanceof String; // returns true myString instanceof Object; // returns true myObj instanceof Object; // returns true, despite an undefined prototype ({}) instanceof Object; // returns true, 同上 myString instanceof Date; // returns false myDate instanceof Date; // returns true myDate instanceof Object; // returns true myDate instanceof String; // returns false
實例四:演示mycar屬於Car類型的同時又屬於Object類型
下面的代碼創建了一個類型Car,以及該類型的對象實例mycar. instanceof運算符表明了這個mycar對象既屬於Car類型,又屬於Object類型。
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; } var mycar = new Car("Honda", "Accord", 1998); var a = mycar instanceof Car; // 返回 true var b = mycar instanceof Object; // 返回 true