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