Array 检测

一般在js里,我们一般使用typeof 、instanceof进行类型检测,例如:检测某个对象是否为数组:

if (value instanceof Array){

// 执行相关的代码

}

但这段代码只在有且只有一个全局执行环境中才成立,在红宝书中对此有这么一段定义:

如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数

所幸ECMAScript 5 新增了Array.isArray()方法用于数组的检测,

if (Array.isArray(value)){

// 执行数组相关代码

}

但该方法只得到了IE9+、Firefox 4.0+、Safari 5+、Opera 10.5+和 Chrome的支持,对于不知持该方法的浏览器,就要自己手动实现一个isArray(), 实现isArray的方法是使用Object中的toString()方法,返回一个[object NativeConstruectorName]格式的字符串,由于原生数组的构造函数名和全局作用域无关,因此不用担心多个框架问题:

function isArray(value) {

return Object.prototype.toString.call(value) == '[object Array]'

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,475评论 0 4
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 9,720评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,696评论 19 139
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 5,617评论 0 6
  • 第三章 基本概念 3.1 语法 ECMAScript标识符一般采用驼峰大小写格式,也就是第一个字母小写,剩下的每个...
    小雄子阅读 3,677评论 0 1