当前位置:网站首页 > 技术博客 > 正文

js判断数据类型的方法及优缺点



一.typeof

typeof操作符返回一个用来表示数据类型的字符串,注意typeof运算之后的结果都是字符串类型的

注意:typeof是一个操作符,不是一个函数!

  • 1.“string” 值是字符串
  • 2.“boolean” 值是布尔值
  • 3.“number” 值是数值
  • 4.“undefined” 值未定义
  • 5.“object” 值是对象,数组或null
  • 6.“function” 值是函数
  • 7.“symbol” 值是Symbol
 
  
1 优点

只能检测出,,,,,,

2.缺点
  • 基本数据类型,null返回object 其他都可以返回正确结果
  • 引用数据类型,除了function以外,都返回object
  • function返回function类型

二.instanceof

语法: object instanceof 构造函数

返回值:如果是这个构造函数构造出来的,返回true,否则返回false。

 
  

得出一个结论:,无法检测基本数据类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。

并且也无法检测undefined和null ,因为他们两个比较特殊,使用instanceof检测时,浏览器根本不识别,会报错

 
  

1.优点
  • 可以检测出某特定的引用类型具体是某种类型
2.缺点
  • 只能检测引用类型

三.constructor

每个对象都有一个隐藏属性constructor,该属性指向对象的构造函数(类)

 
  
1.优点
  • 基本上基本数据类型和引用数据类型都可以检测,但是除了自定义的对象外
2.缺点
  • 为什么说除了自定义对象外都可以检测 ,因为检测自定义对象时不可靠!具体原因参考参考用constructor来做类型识别,并不可靠
  • 函数的 constructor 是不稳定的,这个主要体现在自定义对象上,当开发者重写 prototype 后,原有的 constructor 引用会丢失,constructor 会默认为 Object
  • undefined和null无法检测

四.Object.prototype.toString.call()

jQuery就是通过这种方式来判断的!

 
  
1.优点
  • 基本上的数据类型都可以检测
2.缺点
  • 自定义的类是不能准确判断的,这里可以采用instanceof

3,扩展

我们发现上面打印[object String]类似这种不太完美,比如我想直接打印string呢

 
  

封装一个函数,实际上得到的是一个字符串,只要我们对他进行截取即可,然后转为小写,就可以得到我们想要的结果,与typeof打印的格式一样

版权声明


相关文章:

  • uvm验证书籍2025-06-24 17:30:04
  • term inate2025-06-24 17:30:04
  • 字符型和整型有什么区别2025-06-24 17:30:04
  • css字体名称属性2025-06-24 17:30:04
  • 存储器分为哪两大类2025-06-24 17:30:04
  • java匿名内部类和lambda表达式2025-06-24 17:30:04
  • 私有成员变量怎么访问2025-06-24 17:30:04
  • c++中函数已有主体2025-06-24 17:30:04
  • 微信定位精灵免费版下载安装2025-06-24 17:30:04
  • 适配器模式 js2025-06-24 17:30:04