比較typeof與instanceof
相同點:JavaScript 中 typeof 和 instanceof 常用來判斷一個變數是否為空,或者是什麼型別的。
typeof 的定義和用法:返回值是一個字串,用來說明變數的資料型別。
細節:
(1)、typeof 一般只能返回如下幾個結果:number, boolean, string,function,object,undefined。
(2)、typeof 來獲取一個變數是否存在,如 if(typeof a!="undefined"){alert('OK')},而不要去使用if(a) 因為如果a不存在(未宣告)則會出錯。
(3)、對於Array,Null等特殊物件使用typeof 一律返回object, 這正是typeof的侷限性。
instanceof 定義和用法:instanceof 用於判斷一個變數是否屬於某個物件的例項。
/-----------
例項演示:
a instanceof b ? alert('true') : alert('false'); // a是b的例項? 真:假
var a = new Array();
alert(a instanceof Array); // true alert(a instanceof Object) // true
如上,會返回true,同時alert(a instanceof Object)也會返回true;這是因為Array是Object的子類。
function Test () {};
var a = new Test();
alert(a instanceof Test) // true
--------------/
細節:
(1)、如下,得到的結果為N ,這裡的instanceof 測試的object是js語法中的object ,不是指dom模型物件。
if(window instanceof Object) {alert('Y')}else{alert('N'} // N