1. 程式人生 > 其它 >常用判斷js資料型別

常用判斷js資料型別

通常情況下用typeof 判斷就可以了,遇到預知Object型別的情況可以選用instanceof或constructor方法,實在沒轍就使用$.type()方法。

一、typeof
alert(typeof a)  ------------> string
alert(typeof b)  ------------> number
alert(typeof c)  ------------> object
alert(typeof d)  ------------> object
alert(typeof e)  ------------> function
alert(
typeof f) ------------> function

typeof無法判斷null,因為null的機器碼均為0,so用typeof判斷null直接當做物件看待

alert(typeof null)  ------------> object
二、判斷已知物件型別的方法: instanceof
alert(c instanceof Array) ---------------> true
alert(d instanceof Date) ---------------->true
new Data('2021/11/23') instanceof Data --->true
alert(f instanceof Function) ------------> true alert(f instanceof function) ------------> false 注:instanceof 後面一定要是物件型別,並且大小寫不能錯,
原理就是隻要右邊變數的prototype在左邊變數的原型鏈即可。
三、根據物件的constructor判斷: constructor

alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true
四、通用的Object.prototype.toString
alert(Object.prototype.toString.call(a) === ‘[object String]') -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]') -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]') -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]') -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]') -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]') -------> true;
五、萬能之王jquery.type()---->簡寫$.type()
jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jQuery.type( [] ) === "array"
jQuery.type( new Date() ) === "date"
jQuery.type( new Error() ) === "error" // as of jQuery 1.9
jQuery.type( /test/ ) === "regexp"