javascript的类型检测的方法(面试高频)

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()返回值首字母为大写

你可能感兴趣的:(javascript的类型检测的方法(面试高频))