本篇文章帶給大家的內容是關於javascript如何判斷物件的資料類型? ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
對js中不同資料的布林值類型總結:false:空字串;null;undefined;0;NaN。 true:除了上面的false的情況其他都為true;
javascript中有六種資料型別:string;boolean;Array;Object;null;undefined。如何偵測這些資料型別呢,總結方法如下:
第一種方法:typeof
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(typeof obj) // object console.log(typeof arr) // object console.log(typeof str) // string console.log(typeof bool) // boolean console.log(typeof num) // number console.log(typeof n) // object console.log(typeof fn) // function
透過上面測試,發現typeof偵測陣列與字典時傳回型別都是Object,無法區別是數組還是物件。如果想要檢查是陣列還是物件使用instanceof方法和constructor方法
第二種方法:instanceof
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(obj instanceof Object) // true console.log(arr instanceof Array) // true console.log(str instanceof String) // false console.log(bool instanceof Boolean) // false console.log(num instanceof Number) // false console.log(n instanceof Object) // false console.log(fn instanceof Function) // true
注意:instanceof 只可以用來判斷陣列和物件、函數,不能判斷string、數字和boolean類型,如果需要判斷string和boolean可使用tostring()方法。
特別注意:
instanceof方法在檢查陣列是否為物件時,傳回結果為True
var arr = ['a','b','c'] console.log(arr instanceof Object) // true
如果使用instanceof需要嚴格判斷是陣列或是物件時,改進程式碼如下:
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var getDataType = function(data){ if(data instanceof Array){ return 'Array' } else if (data instanceof Object){ return 'Object' } else{ return 'data is not obejct type' } } getDataType(obj) // Object getDataType(obj) // Array getDataType(obj) // data is not obejct type
第三種方法:constructor
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(obj.constructor == Object) // true console.log(arr.constructor == Array) // true console.log(str.constructor == String) // true console.log(bool.constructor == Boolean) // true console.log(num.constructor == Number) // true console.log(fn.constructor == Function) // true
測試發現constructor支援檢查Object、Array、String、Boolean、Number、Function
第四種方法:toString(建議使用)
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(Object.prototype.toString.call(obj)) // [object Object] console.log(Object.prototype.toString.call(arr)) // [object Array] console.log(Object.prototype.toString.call(str)) // [object String] console.log(Object.prototype.toString.call(bool)) // [object Boolean] console.log(Object.prototype.toString.call(num)) // [object Number] console.log(Object.prototype.toString.call(n)) // [object Null] console.log(Object.prototype.toString.call(fn)) // [object Function]
從測試看出來,最好使用toString,這個方法功能比較全面。
以上是javascript中如何判斷物件的資料型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!