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