JavaScript中判断数据是什么类型的方法有: typeof, instanceof, constructor, Object.prototyee.toString方法以及Array.isArray()等。
1. typeof运算符 - 它会返回一个表示参数数据类型的字符串
// typeof 对对象类型的数据均返回"object",并不能区分对象类型的数据
typeof [1,2] --> "object"
typeof {a:1} --> "object"
typeof null --> "object"
所以typeof不能作为判断数组的方法
2.instanceof运算符 - 用于检测 构造函数的prototype属性 是否出现在某个实例对象的原型链
// 语法
object instanceof constructor
// object 某个实例对象
// constructor 某个构造函数
// 例子
[1,2] instanceof Array --> true
[1,2] instanceof Object --> true // 在数组的原型链上也能找到Object构造函数
{} instanceof Array --> false
3.constructor属性 - 这个属性指向生成这个值的方法
[].constructor --> ƒ Array() { [native code] }
{}.constructor --> ƒ Object() { [native code] }
null.constructor --> 报错
constructor不是一种特别靠谱的方法,因为constructor属性是可以被改写的
4. Object.prototype.toString - 会返回"[object type]",type代表对象的类型
Object.prototype.toString.call([]) --> "[object Array]"
Object.prototype.toString.call({}) --> "[object Object]"
Object.prototype.toString.call('a') --> "[object String]"
// apply方法也可以