1. typeof
2. instanceof
用于判断构造函数的prototype
有没有出现在该对象的原型链上(__pro__
)
缺陷:
-
instanceof 无法判断 基本数据类型(primitive)数据
-
instanceof 判断数组
[] instanceof Array // true
一般来说这样就可以判断该数据是不是数组,但是Array.isArray([])
比较常见,
MDN Array.isArray()做了解释
当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.拷贝他的代码做了测试
这边做的考虑跟redux的isPlainObject类似,考虑了js执行有不同的上下文环境,isPlainObject做了说明。xArray是iframe中的数组,跟当前的Array就不是同个数组,所以当前环境的Array.prototype压根就不在arr的原型链上
3.Object.prototype.toString.call()
缺陷:
-
无法判断基本数据类型的包装类型