1 .typeof
typeof 对于基本数据类型判断是没有问题的,但是遇到引用数据类型
(如:Array)是不起作用 返回的是一个字符串类型的
2 . instanceof
能够把引用数据类型判断准确 但是不能判断出基本数据类型
(判断 new 关键字创建的引用数据类型
不考虑 null 和 undefined(这两个比较特殊)以对象字面量创建的基本数据类型) 它 是一个操作符 返回的是一个true或false
3 .constructor
似乎完全可以应对基本数据类型和引用数据类型 但如果声明了一个构造函数,
并且把他的原型指向了 Array 的原型,所以这种情况下,constructor 也显得力不从心
constructor是prototype对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,
就去原型链上寻找,因此,实例对象也是能使用constructor属性的。
4 . 使用Object.prototype.toString.call()检测对象类型
可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为thisArg。
5 .无敌万能的方法:jquery.type()
如果对象是undefined或null,则返回相应的“undefined”或“null”。