JavaScript 判断数据类型的6个方法


typeof

typeof是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示
typeof虽然能用,但是如果你用它来看null或者数组的类型,就会翻车哦
因为typeof只会返回number,boolean,string,undefined,object,function,ES还有symbol
在这里插入图片描述
在这里插入图片描述

Object.prototype.toString…

toString()是Object的原型方法,调用该方法,默认返回当前对象的[[Class]]。对于Object对象,直接调用toString()就能返回[object Object],而对于其他对象,则需要通过call来调用才能返回正确的类型信息。
Object.prototype.toString.call(arr/obj)
返回一个字符串,直接显示是什么类型一一对应,毫无压力,堪称完美
在这里插入图片描述
既然.call好使,那么我又试了一下bind和apply,发现也好使。放心用!
Object.prototype.toString.apply(arr/obj)
Object.prototype.toString.bind(arr/obj)()
在这里插入图片描述

instanceof

instanceof用来判断A是否为B的实例,表达式为:A instanceof B,如果A是B的实例,则返回true,否则返回false。instanceof检测的是原型,内部机制是通过判断对象的原型链中是否有类型的原型。
这个非常鸡肋,十分没用。

  1. 因为这个的返回值是布尔值。你只能靠自己猜,然后自己测试是不是某个类型。还是Object.prototype.toString.xxx好用,人家直接返回string,看的比较直观,并且准确。
  2. 因为它没办法判断基本数据类型,你看6种基本数据类型全都翻车了。
    如果你问我为什么不写c instanceof null d instanceof undefined,因为这么写会报错!
    在这里插入图片描述

constructor

当一个函数被定义时,JS引擎会为其添加prototype原型,然后在prototype上添加一个constructor属性。函数的constructor属性指向它本身。
这个也是超级无敌鸡肋,遇到null和undefined直接报错
在这里插入图片描述在这里插入图片描述
但是还好,其他的数据类型都能判断
在这里插入图片描述


我是萝莉安,今天也是辛苦的一天呢

发布了131 篇原创文章 · 获赞 451 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/qq_36667170/article/details/105152982