位置: 编程技术 - 正文

为JS扩展Array.prototype.indexOf引发的问题及解决办法(js扩展名是什么文件)

编辑:rootadmin

推荐整理分享为JS扩展Array.prototype.indexOf引发的问题及解决办法(js扩展名是什么文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js的扩展名,js中的扩展运算符,js扩展函数,javascript 扩展,js扩展函数,javascript 扩展,js扩展名是什么文件,javascript 扩展,内容如对您有帮助,希望把文章链接给更多的朋友!

Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了。但是这个自定义的indexOf在对数组进行遍历的时候却出现了问题。

用的时候直接

扩展了以后,用起来很爽很方便,一片和谐景象...

但是某次是遍历数组元素的时候,使用for..in..循环,引发了其他的问题,打破了这个和谐的氛围。

本来想输出这四个人的名字,结果输出的是什么呢?

输出的居然是:

除了把名字打出来以外,还额外输出了自己扩展的方法indexOf,但是令人疯狂的是,firefox却是“正常”的,只有四个人的人名,为什么会这样?

输出indexOf,自己扩展的,可以理解,毕竟for..in是遍历一个对象的所有用户定义的属性或者一个数组的所有元素。

那么firefox为什么不会?

后来查了资料才明白,

为JS扩展Array.prototype.indexOf引发的问题及解决办法(js扩展名是什么文件)

Array在javascript1.6版本已经支持Array.indexOf(),而我用的firefox是3.5版本,已经支持javascript1.8了,indexOf是其Array本身固有的方法了。

而IE,即使我用的是IE8,也才支持到javascript1.3版本。

所以IE8认为indexOf是“用户定义的属性”,而firefox认为是自己原生支持的固有的属性。

真的是这样吗?

做个实验,把indexOf更名为myIndexOf,再试试,结果IE和firefox都输出myIndexOf,证明前面的观点是正确。

那么又来了个问题,我扩展indexOf很久了,现在不少项目的代码都已经在使用这个方法,而现在我非要使用for..in输出数组本身的元素,不要其他我自己扩展到俄方法,怎么办?

好在javascript提供了hasOwnProperty方法。

看一下其描述:

看描述,就是我们想要的东西。

在for...in..里做个 判断就OK了

另外,附上hasOwnProperty用法示例,来源于互联网:

查看浏览器支持javascript到哪个版本:

JavaScript学习笔记之基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括:各种算术运算符、比较运算符、逻辑运算符;ifelse语句、switch语句

浅谈javascript 迭代方法 五个迭代方法都接受两个参数:要在每一项上运行的函数和运行该函数的作用域(可选)every():对数组中的每一项运行给定函数。如果函数对每一项都返

script标签属性用type还是language 被人问起一个问题:scriptlanguage="JavaScript"scripttype="text/javascript"script这三个标签的使用有什么区别?虽然一直在用,却也没有好好去弄清楚,这里详细说

标签: js扩展名是什么文件

本文链接地址:https://www.jiuchutong.com/biancheng/383882.html 转载请保留说明!

上一篇:DOM基础教程之使用DOM设置文本框(dom操作的方法)

下一篇:JavaScript学习笔记之基础语法(javascript教程完整版)

  • 小企业汇算清缴要审计报告吗
  • 两家公司实际控制人为一个人
  • 预缴企业所得税怎么做会计分录
  • 中小企业对应的是
  • 工业企业生产成本包括哪些
  • 融资租入的企业有哪些
  • 合并报表时抵消内部交易包含的未实现损益的影响有哪些
  • 逐步测试法计算内含报酬率
  • 土地使用权摊销的会计分录
  • 进项税转出属于什么科目
  • 公司注销时资本要交税吗
  • 小微企业不超过300万所得税
  • 本月报销能用下月报销吗
  • 小微企业季度所得税怎么计算
  • 会计档案保管最新规定
  • 非同一控制下企业合并的交易费用
  • 制造费用分配的的标准是什么?
  • 作业成本法的成本对象包括哪几个层次
  • 研发费用加计扣除优惠明细表
  • mac屏幕横过来了
  • 微软手机
  • 现金付款凭证是什么意思
  • 手机电脑排行
  • 很有意思的一段话
  • 土建工程付款方式比例
  • 可供分配利润在财报哪里
  • 碧峰峡熊猫基地门票
  • 黑尾鮰鱼
  • 旅游企业税务筹划
  • python网络爬虫技术
  • Yii2中添加全局函数的方法分析
  • 房产税城镇土地使用税申报期限
  • php javascript
  • 安装elementUI
  • 如何在vue项目中禁止谷歌浏览器改变网页颜色
  • python单子
  • lnewusers命令 创建用户账号
  • mongodbwindows安装
  • ie8 ie8i
  • 电脑word怎么学
  • 政府无偿划转股权印花税
  • 企业收购合并中土地问题
  • 新版发票填开操作流程
  • 公司个人借款如何做账
  • 预缴增值税附加税需要计提吗
  • 消防工程改造怎样入账
  • 小规模纳税人结转增值税的账务处理
  • 印花税如何计提缴纳
  • 招标代理专家库合法吗
  • 营改增后物业公司账务处理
  • 职工外地就医怎么报销
  • 投资款不属于收入吗
  • 公司账本需要保留几年
  • 总账建账要建全部科目吗
  • sql server 触发器
  • 一些 T-SQL 技巧
  • mysql存储过程菜鸟教程
  • IPad怎么连接电视机看看影视
  • ubuntu18.04安装wps
  • ubuntu获取当前路径
  • 苹果MAC电脑如何设置开机密码
  • winxp怎样设置网络
  • redhat6.9安装图解
  • imjpmig是什么进程
  • win10企业版20h2和1909
  • linux ping命令的用法
  • windows8.1应用商店打不开
  • window高级启动会怎么样
  • win8.1怎么关闭防火墙
  • [置顶] clauvio,Twitter小老鼠
  • javascript date函数
  • Android studio配置环境
  • viewpager2+fragment
  • 深入解读2023年一号文件
  • jQuery formValidator表单验证
  • 深入理解中国式现代化
  • 一个治疗Unity的Prefab强迫症患者的小招(Prefab变成红色的问题)
  • 安卓微信仿ios版
  • 个人所得税追缴很快就缴清了还会被罚款吗
  • 潍坊税务局上班时间表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设