1.typeOf适合检测基本数据类型,不适合检测null ,array ,object
如果是null返回的是object
如果是array返回的也是object
如果是NAN返回的是number
2.instanceOf
基于原型链进行判断类型,如果左边不是对象则返回false。如果右边不是obj直接报错。
每一个构造函数都有prototype的对象属性,函数的prototype属性指向了原型对象
而原型对象又有个constructor属性指向相关的构造函数
每一个构造函数都有prototype的对象属性,prototype的对象属性将用来new构造函数构造出来的实例就会构造对象的原型
例如:这里有个person函数,person有个prototype的对象属性,当我们使用new person()的时候构造的person的实例就会有一个原型就会指向person._prototype
注意:不同window或iframe之间的对象类型不能使用instanceOf。
3.用Object.prototype.toString.apply(检测对象)
总结:
第一步可以用typeOf判断基本的数据类型(typeOf不适合检测null)
用instanceOf判断是不是对象(不适合iframe和window)
object.prototype.toString.apply()遇到undefined和null失效