web开发中怎样检测数组

这次给大家带来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类库目前都类似地实现了这个方法。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

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

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

以上就是web开发中怎样检测数组的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750185.html

(0)
上一篇 2025年3月8日 05:32:30
下一篇 2025年3月6日 02:10:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • web开发中怎样检测属性

    这次给大家带来web开发中怎样检测属性,web开发中检测属性的注意事项有哪些,下面就是实战案例,一起来看一下。 用到null(以及undefined)的场景是当检测一个属性是否在对象中存在时,比如: // 不好的写法:检测假值if (obj…

    编程技术 2025年3月8日
    200
  • JS中特性与UA检测

    这次给大家带来JS中特性与UA检测,JS中特性与UA检测的注意事项有哪些,下面就是实战案例,一起来看一下。 最早的浏览器嗅探即用户代理(user-agent)检测,服务端(以及后来的客户端)根据user-agent字符串来确定浏览器的类型。…

    编程技术 2025年3月8日
    200
  • 在react-native中通过WebView处理返回非回调方法

    这篇文章主要介绍了详解react-native webview 返回处理(非回调方法可解决),现在分享给大家,也给大家做个参考。 1.前言 项目中有些页面内容是变更比较频繁的,这些页面我们会考虑用 网页 来解决。 在RN项目中提供一个公用的…

    2025年3月8日 编程技术
    200
  • 在Vue中如何实现web分页组件

    这篇文章主要为大家详细介绍了vue实现web分页组件的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Vue实现web分页组件的具体代码,供大家参考,具体内容如下 效果演示 源代码 nbsp;html>…

    2025年3月8日
    200
  • 关于vue.js数组的变异方法

    本篇文章给大家分享了vue.js数组的变异方法的相关内容,有兴趣的朋友跟着学习参考下。 Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下: push() pop() shift() 立即学习“前端免费学习笔记(深…

    编程技术 2025年3月8日
    200
  • 如何利用iview的Table组件实现将表格的列合并

    本篇文章给大家带来的内容是关于如何利用iview的table组件实现将表格的列合并,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 iview的Table组件表头分组 iview的Table组件表头分组 需求说明 合并表头 …

    2025年3月8日
    200
  • js中对数组进行操作的方法总结(代码)

    本篇文章给大家带来的内容是关于js中对数组进行操作的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1.找出元素 item 在给定数组 arr 中的位置 function indexOf(arr, item…

    编程技术 2025年3月8日
    200
  • Nodejs对web开发你知道多少?一篇文章让你了解nodejs开发web

    这篇文章让我们了解nodejs对web开发的过程,你想知道的都在这里,由服务器动态生成html页面。下面就让我们来看这篇文章吧。 一 ,Node.js 和 PHP、 Perl、ASP、JSP 目的都是实现动动态网页,也就是说由服务器动动态生…

    2025年3月8日
    200
  • 深入理解JS数组合并push与concat区别

    在javascript中经常用到数组拼接,push 和concat 都可以合并数组,他们之间有什么区别呢?接下来就和大家讲述js数组合并push与concat区别。有需要的同学可以参考一下。 1、push()方法   var array=[…

    编程技术 2025年3月8日
    200
  • 深入理解JS数组操作方法 concat()、slice()、splice()

    最近比较闲,将所学的知识进行了总结,这篇文章概括了数组的不同操作方法,concat()、slice()和splice(),有需要的朋友可以参考一下,希望对你有用。 concat()方法 concat()方法:基于当前数组中所有项创建新数组。…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论