w3ctech

JavaScript判断数组(Array)类型

什么样的方法才能完成的检测数组类型呢(frame之间)?在ES5中引入了Array.isArray()来检测数组类型,但是并不是所有浏览器都支持。在不支持Array.isArray()的浏览器中,Juriy Zaytsev给出一个解决方案:就是调用某个值的内置toString方法在所有浏览器中都返回标准的字符串结果,所以下面有一个兼容的解决方案:

function isArray(value) {
    if (typeof Array.isArray === "function") {
        return Array.isArray(value);
    } else {
        return Object.prototype.toString.call(value) === "[object Arrary]";
    }
}

下面的这个方法是由道格拉斯提出的,但是感觉没有上面的方法这么看起来直接和简单:

var is_array = function (value) {
    return value &&
        typeof value === 'object' &&
        typeof value.length === 'number' &&
        typeof value.splice === 'function' &&
        !(value.propertyIsEnumerable('length'));
};
w3ctech微信

扫码关注w3ctech微信公众号

共收到3条回复

  • 强!

    回复此楼
  • 一道经典的面试题

    回复此楼
  • 如果不涉及跨 iframe 访问对象,那用 instanceof Array 是最简单了。。。

    回复此楼