小编给大家分享一下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中判断对象数据类型的方法是什么的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注天达云行业资讯频道!