老生常谈的问题怎么判断变量昰否是一个数组?
在js中,Array是由Array构造函数创建的实例本质上是一个对象,所以用typeof检测数组并不准确
instanceof操作符的问题在于,它假定只有一个全局执行環境如果网页中包含多个框架那实际上就可能存在两个以上的不同的全局环境,从而存在两个以上的Array构造函数如果从一个框架传入一個数组到另一个框架,那么传入的数组与第二个框架中创建的数组就有各自不同的构造函数。
对象的constructor属性指向其构造函数
以上方法在某些条件下课检测数组但特定情况下会导致结果不准确。
每个对潒下都有tolocaleString(),toString(),valueOf方法其中调用数组的toString方法会返回数组中每个值的字符串形式拼接成一个以逗号分隔的字符串。
[[Class]]是一个内部属性,所有的对象(原生對象和宿主对象)都拥有该属性.[[class]]为一个表明该对象类型的内部属性其值类型为字符串。
也就是说用toString方法可以获取对象的[[class]]属性,而[[class]]属性又表明了该对象的类型
//因为兼容问题所以判断是否支持Array.isArray函数