typeof用來偵測給定變數的資料型別(也可稱為基本型,基本資料型別。包含undefined、boolean、string、number、object、function)
var message = "so easy";
alert(typeof message); //"string"
alert(typeof 12); //"number"
可以這樣記憶:typeof是用來判斷不是用new創建的「變數」。
instanceof用來偵測物件的型別(也可叫做參考型別。包含Object、Array、Date、RegExp、Function、基本包裝型別(含Boolean、Number、String))
var numberObject = new Number(10 );
var numberValue = 10;
alert(typeof numberObject); //"object"
alert(typeof numberValue); //"number"
alert(numberObject instanceof Number); //"number"
alert(numberObject instanceof Number); // true
alert(numberValue instanceof Number); //false
numberValue是number基礎資料型別,不屬於任何參考型別。
可以這樣記憶:instanceof檢測的都是用new創建的「物件」。而沒有透過new創建出來的「變數」不屬於任何一個引用類型。用typeof偵測用new建立的「物件」總是回傳的是「object引用類型」.
isPrototypeOf()方法用來偵測原型和實例的關係。 instanceof同樣也可以檢測。只要是原型鏈中出現過的原型,都可以說是該原型鏈所衍生的實例的原型。
var person = new Person(); //Person繼承與Object
alert(Person.prototype.isPrototypeOf(person)); //true