介绍
小编给大家分享一下javascript中判断对象数据类型的方法是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
对js中不同数据的布尔值类型总结:错误的:空字符串;零;定义;0;NaN.true:除了上面的虚假的情况其他都为真;
<强> javascript中有六种数据类型强>:<强>字符串>强;<强>布尔强>,<强>数组>强;<强> 强>对象;零<强> 强>,<强>未定义的>强。如何检测这些数据类型呢,总结方法如下:
<强>第一种方法:typeof 强>
var obj={& # 39;名字# 39;:& # 39;汤姆# 39;} var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 var str=& # 39; chenxinming& # 39; var bool=true var num=1 var n=零 var fn=function (n) { console.log (n) } 控制台。日志(typeof obj)//对象 控制台。日志(typeof arr)//对象 控制台。日志(typeof str)//字符串 控制台。日志(typeof bool)//布尔 控制台。日志(typeof num)//号码 控制台。日志(typeof n)//对象 控制台。日志(typeof fn)//函数
通过上面测试,发现typeof检测数组和字典时返回类型都是对象,无法区别是数组还是对象。如果想要检查是数组还是对象使用instanceof方法和构造函数方法
<强>第二种方法:运算符强>
var obj={& # 39;名字# 39;:& # 39;汤姆# 39;} var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 var str=& # 39; chenxinming& # 39; var bool=true var num=1 var n=零 var fn=function (n) { console.log (n) } 控制台。日志(obj instanceof对象)//真实的 控制台。日志(arr instanceof数组)//真实的 控制台。日志(str instanceof字符串)//假的 控制台。日志(bool instanceof布尔)//假的 控制台。日志(num instanceof数量)//假的 控制台。log (n instanceof对象)//假的 控制台。日志(fn运算符函数)//真正的
注意:运算符只可以用来判断数组和对象,函数,不能判断字符串,数字和布尔类型,如果需要判断字符串和布尔可使用tostring()方法。
<强>特别注意:强>
instanceof方法在检查数组是否为对象时,返回结果为真正的
var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 控制台。日志(arr instanceof对象)//真正的
如果使用instanceof需要严格判断是数组或者是对象时,改进代码如下:
var obj={& # 39;名字# 39;:& # 39;汤姆# 39;} var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 var str=& # 39; chenxinming& # 39; var getDataType=function(数据){ 如果(数据实例数组){ 返回& # 39;数组# 39; } else if(数据实例对象){ 返回& # 39;对象# 39; } 其他{ 返回& # 39;数据不是obejct类型# 39; } } getDataType (obj)//对象 getDataType (obj)//数组 getDataType (obj)//数据不是obejct类型
第三种方法:构造函数
var obj={& # 39;名字# 39;:& # 39;汤姆# 39;} var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 var str=& # 39; chenxinming& # 39; var bool=true var num=1 var n=零 var fn=function (n) { console.log (n) } console.log (obj。构造函数==对象)//真实的 console.log(加勒比海盗。构造函数==数组)//真实的 console.log (str。构造函数==String)//真实的 console.log(保龄球。构造函数==布尔)//真实的 console.log (num。构造函数==数量)//真实的 console.log (fn。构造函数==函数)//真正的
测试发现构造函数支持检查对象、数组、字符串、布尔值、数字,函数
<强>第四种方法:toString(建议使用)强>
var obj={& # 39;名字# 39;:& # 39;汤姆# 39;} var arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;】 var str=& # 39; chenxinming& # 39; var bool=true var num=1 var n=零 var fn=function (n) { console.log (n) } console.log (Object.prototype.toString.call (obj))//(对象对象) console.log (Object.prototype.toString.call (arr))//(对象数组) console.log (Object.prototype.toString.call (str))//(对象的字符串) console.log (Object.prototype.toString.call (bool))//(布尔对象) console.log (Object.prototype.toString.call (num))//(物体) console.log (Object.prototype.toString.call (n))//(对象为空) console.log (Object.prototype.toString.call (fn))//(目标函数)javascript中判断对象数据类型的方法是什么