首頁 >web前端 >js教程 >javascript中如何判斷物件的資料型別?

javascript中如何判斷物件的資料型別?

不言
不言轉載
2018-10-27 15:23:561986瀏覽

本篇文章帶給大家的內容是關於javascript如何判斷物件的資料類型? ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

對js中不同資料的布林值類型總結:false:空字串;null;undefined;0;NaN。 true:除了上面的false的情況其他都為true;

javascript中有六種資料型別string;booleanArray;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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除