判断一个数据的类型
1⃣️.typeof 运算符号
缺点:typeof检测null的时候也会返回Object
2⃣️.instanceof运算符
优点:弥补了typeof不能具体检测属于哪个对象的局限性
缺点:不能用来检测和处理字面量方式创建出来的基本数据类型,即原始数据类型
function checkIsInstanceOf(obj,type){
let proto = Object.getPrototypeOf(obj)
while(proto!=null){
if(proto===type.prototype){
return true
}
proto = Object.getPrototypeOf(obj)
}
return false
}
3⃣️.constructor构造函数
优点:作用和instanceof相同,可以处理引用类型还能处理原始数据类型
使用constructor的时候最好加上(),放置js把它当成小数
(1).constructor === Number
缺点:由于是函数原型上面的属性,类的原型进行重写后,可能导致判断不准确
4⃣️.Object.prototype.toString.call()方法
Object.prototype.toString返回当前方法的执行体所属类的详细信息
返回结果如:[object Number]