結果如下圖顯示,空陣列 和 null被 typeof 解釋為 object 型別,有的人可能會認為 typeof 關鍵字對陣列 和 null 的型別判斷是錯誤的,其實typeof對於陣列 和 null 的型別判斷是正確的,只不過不夠精準而已。
obj instanceof object,左邊運算元obj為物件(如果不小心寫成基本型別 比如數字啥的,就會返回false),右邊運算元object為函式物件或者是函式構造器,否則丟擲typeerror。
實質就是:instanceof操作符判斷左運算元物件的原型鏈上是否有右邊這個建構函式的prototype屬性,也就是說指定物件是否是某個建構函式的例項,最後返回布林值,這個對整個原型鏈上的物件都是有效的,由於instanceof對整個原型鏈上的物件都有效,因此同乙個例項物件,可能會對多個建構函式都返回true!
用costructor來判斷型別看起來是完美的,然而,如果我建立乙個物件,更改它的原型,這種方式也變得不可靠了。
如此輕易的更改了contructor,到這裡,你可能會想有沒有一種最精準的方式去判斷資料型別呢?接下來是終極大絕招,奧特曼也是總是到最緊急的時候才出現,這樣才能體現價值所在。
使用 object 物件的原型方法 tostring ,使用 call 進行狸貓換太子,借用object的 tostring 方法
結果精準的顯示我們需要的資料型別。
就算我們改變物件的原型,他依然會顯示正確的資料型別。
js判斷資料型別
1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...
js判斷資料型別
了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...
js判斷資料型別
1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...