JS判断数组

作者: 知止至得 | 来源:发表于2017-09-27 09:49 被阅读40次

    说明

    JS中要区分数组和非数组对象有时候非常的困难,typeof操作符在对数组操作是返回的是 'Object'(除了函数函数意外的所有对象都是如此)。instanceof操作符智能用于简单的形式:

    [] instanceof Array  // => true
    ({}) instanceof Array  / / => false
    

    使用instance的问题是在浏览器中可能会有多个窗口和窗体(frame)。每个窗口都有自己的JavaScript环境、全局对象。并且,每个全局对象有自己的一组构造函数。因此一个窗体中的对象将不可能是另外窗体中的构造函数的实例。

    解决方案

    1. es5 中出现了 Array.isArray() 函数
    Array.isArray([])  // => true
    Array.isArray({})  / / => false
    
    1. 检查对象的类属性,数组的属性总是 Array
    var isArray = Function.isArray || function(o){
        return typeof 0 === 'object' && object.prototype.toString.call(o) === '[object Array]';
    }
    

    这个属性的检测就是方法1 Array.isArray() 方法所做的。

    相关文章

      网友评论

        本文标题:JS判断数组

        本文链接:https://www.haomeiwen.com/subject/ctvyextx.html