PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

javascript中如何判断对象的数据类型?

不言
不言 转载
2018-10-27 15:23:56 1704浏览

本篇文章给大家带来的内容是关于javascript中如何判断对象的数据类型?,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

对js中不同数据的布尔值类型总结:false:空字符串;null;undefined;0;NaN。true:除了上面的false的情况其他都为true;

javascript中有六种数据类型stringbooleanArrayObjectnull;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,如有侵犯,请联系admin@php.cn删除