JS判断数组

说明

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() 方法所做的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,773评论 0 4
  • 1、typeof 方法 此方法在 null 、数组、对象都返回 Object,有其局限性 2、instanceof...
    xilong阅读 2,738评论 0 1
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 9,748评论 0 6
  • 看怀左同学文章《原来免费的,最后全是最贵的》有感。 走到街上,经常看到有人手里拿着两瓶洗发水之类的小包装拦住我:“...
    溪水音阅读 1,886评论 0 10
  • 2017年,是我来太原的第六个年头,也是毕业的第二个年头。在这个城市有一个属于自己的房子成为我目前唯一的追求,同时...
    程柯摇阅读 2,312评论 0 0

友情链接更多精彩内容