[四种方法]检测数据类型
1.typeof
返回值是一个字符串,如果用两个及以上的typeof检测的话返回值"string",但是他有局限性,能详细检测基本数据类型,但是null不行,检测出来是object,对于引用数据类型步详细检测 只返回object和function.
2.instanceof
检测某个实例是否数据某各类,因为每一种数据类型都对应自己所属的类,所以我们可以通过他来检测数据类型,但是他也有局限性,对于基本数据类型用字面量创建方式创建的变量是无法检测的,但构造函数创建方式可以,引用数据类型可以详细检测
3.constructor
每个类的原型(prototype)上都有一个constructor属性,它指向类本身,那么一个具体的数据类型的实例.constructor 比如"11".constructor->"11"._ _ proto _ _ ->String.protype, string原型上有constructor指向string本身,你也可以通过他的name来得到String类名,也就是他的数据类型
4.Object.prototype.toString()
对象Object类的原型上有一个toString,他可以检测数类型,那么我们就调用Object.prototype.toString()这个方法,用call将里面的this改变成我项检测的那个数据类型,会得到toString console.log(({1:1}).toString());
这个方法不兼容所有浏览器,兼容写法如下⤵️
function getType(type){
return Object.prototype.toString.call(type).split("")[1].replace("]",'');
}