JavaScript 中 typeof 和 instanceof 的區別
阿新 • • 發佈:2019-01-04
typeof 是一個一元運算,放在一個運算數之前,運算數可以是任意型別。
它返回值是一個字串,該字串說明運算數的型別。(typeof 運算子返回一個用來表示表示式的資料型別的字串。 )
typeof其實就是判斷引數是什麼型別的例項,就一個引數
typeof 一般只能返回如下幾個結果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。
運算數為數字 typeof(x) = "number" 字串 typeof(x) = "string" 布林值 typeof(x) = "boolean" 物件,陣列和null typeof(x) = "object" 函式 typeof(x) = "function"
Array,Null 等特殊物件使用 typeof 一律返回 object,這正是 typeof 的侷限性。
在 JavaScript 中,判斷一個變數的型別嚐嚐會用 typeof 運算子,在使用 typeof 運算子時採用引用型別儲存值會出現一個問題,無論引用的是什麼型別的物件,它都返回 “object”。這就需要用到instanceof來檢測某個物件是不是另一個物件的例項。
instanceof
instanceof
運算子用來測試一個物件在其原型鏈中是否存在一個建構函式的 prototype
屬性。
語法:object instanceof constructor
引數:object(
要檢測的物件.)constructor(
某個建構函式)
描述:instanceof
運算子用來檢測 constructor.prototype
是否存在於引數 object
的原型鏈上。
instance:例項,例子
a instanceof b?alert("true"):alert("false"); //a是b的例項?真:假
instanceof 用於判斷一個變數是否某個物件的例項,
測試 var a=new Array();if (a instanceof Object) alert('Y');else alert('N');得'Y’
但 if (window instanceof Object) alert('Y');else alert('N');得'N'
所以,這裡的 instanceof 測試的 object 是指 js 語法中的 object,不是指 dom 模型物件。
使用 typeof 會有些區別alert(typeof(window)) 會得 object