JavaScript判断数据类型补充typeof与instanceof

判断数据类型

 
function DetermineTheDataType(target) {
  //typeof 不会报错 但是会将数组,对象,null当作object,函数,布尔,字符串,undefined可以正常区分,所以object依靠instanceof来实现
    if (typeof target !== 'object') {
        return typeof target
    }
    //instanceof 返回结果是布尔值 会将数组判断成对象,但不会将对象判断成数组,
    // 所以如果是对象又是数组,再判断是否是数组,如果是则是数组反则反之,都返回false就是 null
    if (target instanceof Object) {
        if (target instanceof Array) {
            return 'array'
        } else {
            return 'object'
        }
    } else {
        return 'null'
    }
}

顺便练习了下原型链继承

Object.prototype.DetermineTheDataType = DetermineTheDataType 

DetermineTheDataType(null); 

let a = {} 

a.__proto__ = Object 

console.log(a.DetermineTheDataType);

typeof 不会报错

但是会将数组,对象,null当作object

函数,布尔,字符串,undefined可以正常区分

所以处理object依靠instanceof来实现

instanceof 返回结果是布尔值 会将数组判断成对象,但不会将对象判断成数组

所以如果是对象又是数组,再判断是否是数组,如果是则是数组反则反之, instanceof 都返回false就是 null

1
分享到:

评论0

请先

没有账号? 忘记密码?