最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

web开发中怎样检测数组

来源:动视网 责编:小采 时间:2020-11-27 19:41:27
文档

web开发中怎样检测数组

web开发中怎样检测数组:这次给大家带来web开发中怎样检测数组,web开发中检测数组的注意事项有哪些,下面就是实战案例,一起来看一下。JS中最古老的跨域问题之一就是在帧(frame)之间来回传递数组。开发者很快发现instanceof Array在此场景中不总是返回正确的结果。正如上文提到的
推荐度:
导读web开发中怎样检测数组:这次给大家带来web开发中怎样检测数组,web开发中检测数组的注意事项有哪些,下面就是实战案例,一起来看一下。JS中最古老的跨域问题之一就是在帧(frame)之间来回传递数组。开发者很快发现instanceof Array在此场景中不总是返回正确的结果。正如上文提到的


这次给大家带来web开发中怎样检测数组,web开发中检测数组的注意事项有哪些,下面就是实战案例,一起来看一下。

JS中最古老的跨域问题之一就是在帧(frame)之间来回传递数组。开发者很快发现instanceof Array在此场景中不总是返回正确的结果。正如上文提到的,每个帧(frame)都有各自的Array构造函数,因此一个帧(frame)中的实例在另外一个帧里不会被识别。Douglas Crockford首先推荐使用“鸭式辨型”接口(duck typing)“鸭式辨型”是由作家James Whitcomb Riley首先提出的概念,即“像鸭子一样走路、游泳并且嘎嘎叫的鸟就是鸭子”,本质上是关注“对象能做什么”,而不要关注“对象是什么”。

// 采用鸭式辨型的方法检测数组function isArray(value) { return typeof value.sort === "function";
}

这种检测方法依赖一个事实,即数组是唯一包含sort()方法的对象。当然,如果传入isArray()的参数是一个包含sort()方法的对象,它也会返回true。

关于如何在JS中检测数组类型已经有很多研究了,最终,Juriy Zaytsev(也被称作Kangax)给出了一种优雅的解决方案。

function isArray(value) { return Object.prototype.toString.call(value) === "[object Array]";
}

Kangax发现调用某个值的内置toString()方法在所有浏览器中都会返回标准的字符串结果。对于数组来说,返回的字符串为"[object Array]",也不用考虑数组实例是在哪个帧(frame)中被构造出来的。Kangax给出的解决方案很快流行起来,并被大多数JS类库所采纳。

这种方法在识别内置对象时往往十分有用,但对于自定义对象请不要用这种方法。比如,内置JSON对象使用这种方法将返回"[object JSON]"。

从那时起, ECMAScript5将Array.isArray()正式引入JS。唯一的目的就是准确地检测一个值是否为数组。同Kangax的函数一样, Array.isArray()也可以检测跨帧(frame)传递的值,因此很多JS类库目前都类似地实现了这个方法。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

web开发中事件处理规则有哪些

为什么web开发中需要避免使用全局变量

文档

web开发中怎样检测数组

web开发中怎样检测数组:这次给大家带来web开发中怎样检测数组,web开发中检测数组的注意事项有哪些,下面就是实战案例,一起来看一下。JS中最古老的跨域问题之一就是在帧(frame)之间来回传递数组。开发者很快发现instanceof Array在此场景中不总是返回正确的结果。正如上文提到的
推荐度:
标签: 如何 判断 开发
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top