1.typeof:
可以判断基础数据类型(null 除外),但是引用数据类型中,除了 function 类型以外,其他的也无法判断。
2.instanceof:
可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型;
手写instanceof函数
function instanceofFun(obj,type){
console.log("type",typeof obj)
console.log("type",typeof obj != 'object')
console.log("type",typeof obj !== 'null')
if(typeof obj != 'object' || obj === null){
console.log(123)
return false
}
let proto = Object.getPrototypeOf(obj)
while(true){
if(obj === null)return false
if(proto.prototype===type.prototype){
return true
}
proto = proto.prototype;
}
}
3.Object.prototype.toString()
手写全能性类型检测方法
function typeAll(o) { //可检验基本类型与引用类型
if(typeof o !== 'object'){
return typeof o
}else{
return Object.prototype.toString.call(o).slice(7,-1)
}
}
*注:typeof() 返回值首字母为小写
Object.toString()返回值首字母为大写