JavaScript中判断未知对象是否是一个类数组对象

    字符串和函数有 length 属性,但是它们可以用 typeof 检测将其排除。在客户端Js中,DOM文本节点也有 length 属性,需要额外判断 obj .nodeType != 3 将其排除( nodeType 属性返回以数字值返回指定节点的节点类型。如果节点是元素节点,则 nodeType 属性将返回 1。如果节点是属性节点,则 nodeType 属性将返回 2 ):

// 判定obj是否是一个类数组对象
function isArrayLike( obj ) {
    if( obj && typeof obj === "object" &&	      // obj非null、undefined等 obj是对象
        isFinite(obj.length) && 	              // obj.length是有限数值
        obj.length >= 0 &&	                      // obj.length为非负数
        obj.length === Math.floor(obj.length) &&  // obj.length是整数
        obj.length < 4294967296)	              // obj.length < 2^32
        return true;
    else
        return false;
}

猜你喜欢

转载自my.oschina.net/jacktanger/blog/1623549