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);//trueconsole.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, 檢查原型鏈會找到 undefinedmyString instanceof String; // returns truenewStr instanceof String; // returns truemyString instanceof Object; // returns truemyObj instanceof Object; // returns true, despite an undefined prototype({}) instanceof Object; // returns true, 同上myString instanceof Date; // returns falsemyDate instanceof Date; // returns truemyDate instanceof Object; // returns truemyDate 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; // 返回 truevar b = mycar instanceof Object; // 返回 true新聞熱點
疑難解答