一、typeof(a):
日常开发中最常用的方法,在判断String、Number、undefined、Boolean、Function 时都很好用,但是 对象、null和数组的时候都返回'object'。
二、a instanceof xxx:
只适用于检测引用类型。
三、a.constructor:
利用原型链的原理,直接访问查看构造函数。基本数据类型和引用数据类型都好用,但是因为原型链的属性是可以改的,因此如果 constructor 值被改了就麻烦了。
四、Object.prototype.toString.call(a):
返回一个形如 "[object XXX]" 的字符串,若参数为 null 或 undefined,直接返回结果。若参数不为 null 或 undefined,则将参数转为对象,再作判断。