关于typeof的局限性

typeof只能判断js中的基础数据类型
引用数据类型(函数,array,object)全部为Object,如果业务逻辑中需要判断具体为哪一种引用类型,则无法实现

可以实现判断是数组还是对象的几种方法

instanceof

简单来说就是:判断对象的原型链是否是指向构造函数的prototype
已知:array属于object,但是object不全等于array
得出:
    arr instanceof Array //true
    arr instanceof Object //true
    obj instanceof Array //false

对象constructor属性

判断构造器为什么类型
arr.constructor === Array //true
arr.constructor=== Object //false

Object.prototype.toString.call()

此方法可以精确返回call()方法中的参数的数据类型
这里的实现原理大家可以详细琢磨一下,不做赘述。

isArray方法

Array.isArray
返回为boolean值
     

ClearBoth
25 声望3 粉丝

Hello World!