检测数据类型的常用方法

2021-09-23  本文已影响0人  沃德麻鸭

1.typeof------typeof  变量名

1)typeof常用于检测除Object之外的数据类型,例如:Number,String等

返回值:首先是一个字符串,然后包含了我们常用的数据类型,例如:"number"、"string"、"boolean"、"undefined"、"object"、"function"

typeof ["12"] -> "string"

2)typeof null ->"object" 因为null是一个空对象指针

3)typeof不能具体的细分对象、数组、正则等,因为不管检测哪一个返回的都是"object"

检测结果

2、instanceof / constructor----多用于判断引用数据类型

1)instanceof------变量/数值  instanceof  数据类型

检测当前实例是否属于某一个类,属于的话返回true,不属于返回false,instanceof后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

var arr=[  ];

arr instanceof Array ->true

arr instanceof RegExp ->false

arr instanceof Object ->true 所有的对象都是Object这个基类的一个实例

2)constructor------通常通过全等判断的方式进行判断

arr.constructor===Array ->true 说明arr是Array这个类的一个实例(constructor可以让用户自己来修改,所以我们一般不用这个来检测)

3)instanceof的局限性:只要在这个实例的原型链上的类,用instanceof检测的时候都为true,在类的继承中,我们只是单纯通过instanceof来检测数据类型的话是不准确的

检测结果

3.toString检测数据类型------toString.call(值)/ Object.prototype.toString .call(值)

1)原理:在Object.prototype上有一个toString方法,这个方法执行的时候,会返回方法中this关键字对应数据值的数据类型,例如:这里的this对应的数据类型为Object

Object.prototype.toString()

                            //  "[object Object]"

2)这样的话,我们就可以让Object.prototype.toString执行,并且通过call/apply来改变里面的this关键字,也就是想检测谁的数据类型,我们就可以让this变为谁

3)检测的返回值 -> "[object 当前数据类型所属的内置类]"

检测结果

根据不同的方法监测的结果可以知道,如果单纯是用来判断数据类型,用Object.prototype.toString.call()最检测的结果为准确。

其次是constructor,instanceof,typeof

上一篇 下一篇

猜你喜欢

热点阅读