千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 数据类型检测的方式有哪些?

数据类型检测的方式有哪些?

来源:千锋教育
发布人:wjy
时间: 2022-09-30 13:30:47 1664515847

  1. typeof

数据类型检测的方式有哪些1

  其中数组、对象、null都会被判断为object,其他判断都正确。

  2. instanceof

  instanceof可以正确判断对象的类型,其内部运行机制是判断在其原型链中能否找到该类型的原型。

数据类型检测的方式有哪些2

  可以看到,instanceof只能正确判断引用数据类型,而不能判断基本数据类型。instanceof 运算符可以用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

  3. constructor

数据类型检测的方式有哪些3

  constructor有两个作用,一是判断数据的类型,二是对象实例通过 constrcutor 对象访问它的构造函数。

  需要注意,如果创建一个对象来改变它的原型,constructor就不能用来判断数据类型了:

数据类型检测的方式有哪些4

  4. Object.prototype.toString.call()

  Object.prototype.toString.call() 使用 Object 对象的原型方法 toString 来判断数据类型:

数据类型检测的方式有哪些5

  同样是检测对象obj调用toString方法,obj.toString()的结果和Object.prototype.toString.call(obj)的结果不一样,这是为什么?

  这是因为toString是Object的原型方法,而Array、function等类型作为Object的实例,都重写了toString方法。

  不同的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串…),而不会去调用Object上原型toString方法(返回对象的具体类型),所以采用obj.toString()不能得到其对象类型,只能将obj转换为字符串类型;因此,在想要得到对象的具体类型时,应该调用Object原型上的toString方法。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT