javascript中判断对象数据类型的方法是什么

  介绍

小编给大家分享一下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中判断对象数据类型的方法是什么