本篇文章给大家带来的内容是关于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 = truevar num = 1var n = nullvar fn = function(n){ console.log(n) } console.log(typeof obj) // objectconsole.log(typeof arr) // objectconsole.log(typeof str) // stringconsole.log(typeof bool) // booleanconsole.log(typeof num) // numberconsole.log(typeof n) // objectconsole.log(typeof fn) // function
通过上面测试,发现typeof检测数组和字典时返回类型都是object,无法区别是数组还是对象。如果想要检查是数组还是对象使用instanceof方法和constructor方法
第二种方法:instanceof
var obj = {'name':'tom'}var arr = ['a','b','c']var str = 'chenxinming'var bool = truevar num = 1var n = nullvar fn = function(n){ console.log(n) } console.log(obj instanceof object) // trueconsole.log(arr instanceof array) // trueconsole.log(str instanceof string) // falseconsole.log(bool instanceof boolean) // falseconsole.log(num instanceof number) // falseconsole.log(n instanceof object) // falseconsole.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) // objectgetdatatype(obj) // arraygetdatatype(obj) // data is not obejct type
第三种方法:constructor
var obj = {'name':'tom'}var arr = ['a','b','c']var str = 'chenxinming'var bool = truevar num = 1var n = nullvar fn = function(n){ console.log(n) } console.log(obj.constructor == object) // trueconsole.log(arr.constructor == array) // trueconsole.log(str.constructor == string) // trueconsole.log(bool.constructor == boolean) // trueconsole.log(num.constructor == number) // trueconsole.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 = truevar num = 1var n = nullvar 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中如何判断对象的数据类型?的详细内容。