博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 数据类型检测总结
阅读量:4687 次
发布时间:2019-06-09

本文共 1325 字,大约阅读时间需要 4 分钟。

JavaScript 数据类型检测总结

原文:https://blog.csdn.net/q3254421/article/details/85483462

 

在js中,有四种用于检测数据类型的方式,分别是:

  • typeof  用来检测数据类型的运算符
  • instanceof    检测一个实例是否属于某个类
  • constructor   构造函数
  • Object.prototype.toString.call()  原型链上的Object对象的toString方法
  • 下面我们就来分别介绍一下上面四种方法的适用场景和局限性。

typeof 用来检测数据类型的运算符

使用typeof检测数据类型,返回值是字符串格式。能够返回的数据类型

是:“number”,“string”,“bolean”,“undefined”,“function”,“object”。

局限性:

  • typeof (null); //“object”。这是由于在js中,null值表示一个空对象指针,而这也正是使用typeof操作 符检测null值时会返回"object"的原因。
  • 不能具体的细分是数组还是正则,还是对象中其他的值,因为使用typeof检测数据类型,对于对象数据类型的所有的值,最后返回的都是"object"

instanceof 检测某一个实例是否属于某个类
instanceof 主要用来弥补 typeof 不能检测具体属于哪个对象的局限性。

局限性:

  • 不能用于检测和处理字面量方式创建出来的基本数据类型值,即原始数据类型
  • instanceof的特性:只要在当前实例的原型链上的对象,我们用其检测出来都为true
  • 在类的原型继承中,我们最后检测出来的结果未必正确

constructor 构造函数

是函数原型上的属性,该属性指向的是构造函数本身。

作用和instsnceof非常相似,与instanceof不同的是,不仅可以处理引用数据类型,还可以处理原始数据类型。

但是要注意一点的是,当直接用(对象字面量或原始数据).constructor时,最好加上()。为了便于理解,我们来看一个例子。

这主要是由于js内部解析方式造成的,js会把1.constructor解析成小数,这显然是不合理的,小数点后应该是数字,因此就会引发报错。js会把{}解析成语句块来执行,这时后面出现一个小数点显然也是不合理的,因此也会报错。为了解决这个问题,我们可以为表达式加上()使js能够正确解析。

局限性:

  • 我们可以把类的原型进行重写,在重写的过程中很可能把之前constructor给覆盖了,这样检测出来的结果就是不准确的。

 

Object.prototype.toString.call() 原型链上的Object对象的toString方法

Object.prototype.toString的作用是返回当前方法的执行主体(方法中的this)所属类的详细信息,是最全面也是最常用的检测数据类型的方式。

返回值的类型为string类型。

 

=============== End

 

转载于:https://www.cnblogs.com/lsgxeva/p/10214813.html

你可能感兴趣的文章
赛普系统自动拨号
查看>>
platform_device与platform_driver
查看>>
[iOS] iPad与iPhone上各种标准控件的大小
查看>>
动态规划(游船费用问题)
查看>>
[原创]Windows利用BitNami搭建Redmine
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
Linux命令学习一日一命令(RM)
查看>>
5-1
查看>>
一名3年工作经验的程序员应该具备的技能 -- 转载
查看>>
重回博客园有感
查看>>
【转】java事件监听机制
查看>>
Leetcode 423.从英文中重建数字
查看>>
数组 Arrays类
查看>>
String类的深入学习与理解
查看>>
OLTP vs OLAP
查看>>
一些题目(3)
查看>>
Eclipse下配置主题颜色
查看>>
杂题 UVAoj 107 The Cat in the Hat
查看>>
ftp sun jdk自带
查看>>
python 元类——metaclass
查看>>