typeof [1, 2, 4] === 'object';
typeof new Date() === 'object';
typeof null === 'object';
由于typeof数组、null和用new操作符生成的对象,都是返回object
而instanceof,因为在js中,所有对象都是object,故也无法判断数据类型
但Object.prototype.toString对任何变量会永远返回这样一个字符串"[object class]",而这个class就是JavaScript内嵌对象的构造函数的名字。至于用户自定义的变量,则class等于object。
因此通过Object.prototype.toString.apply(obj)可以准确的获取变量数据类型。通过Object.prototype.toString可以获得的数据类型包括:Date, Object, String, Number, Boolean, Regexp, Function, undefined, null, Math等。
参考文献地址:http://blog.csdn.net/woxueliuyun/article/details/8488789