1.Array.isArray() 用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。
Array.isArray([]) // true
2.constructor 属性返回对创建此对象的函数的引用。
[].constructor === Array //true
3.instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上
[] instanceof Array //true
4.调用Object上原型toString方法(返回对象的具体类型)
Object.prototype.toString.call([]).slice(8,-1) === 'Array'//true
5.依靠原型链
({}).toString.call([]).slice(8,-1) === 'Array' // true
补充
typeof 原理
在 javascript 的最初版本中,使用的 32 位系统,为了性能考虑使用低位存储了变量的类型信息:
000:对象 1:整数 010:浮点数 100:字符串 110:布尔
有 2 个值比较特殊:
undefined:用 - (−2^30)表示。 null:对应机器码的 NULL 指针,一般是全零。