JavaScript中for-in遍历方式示例介绍


Posted in Javascript onFebruary 11, 2014

摘要:for-in遍历方式的循环计数器是字符串类型,遍历对象时为对象属性/方法名,遍历数组时为数组元素下标索引,与普通的for循环不同,for-in会将继承的属性/方法列出,这一点在使用时需要特别关注。

除了传统的for循环,JavaScript为遍历操作定义了for-in方式,根据数据源的不同,在使用时存在差异。
(1)遍历对象:

var fish = { 
head : 1, 
tail : 1, 
} 
for(var prop in fish) { 
console.log(fish[prop]); 
}

调试时观察:prop依次为'head','tail',即遍历对象属性时是以字符串类型存在的,循环计数器为对象的属性名。
(2)遍历数组
var arr = ['one', 'two', 'three']; 
for(var prop in arr) { 
console.log(prop); 
}

调试时观察:prop依次为'0','1',即遍历数组时仍是以字符串类型存在,不同的是循环计数器为数组元素的下标。(这时可以试试用for循环输出,结果与for-in是一致的)
如果代码中加入:
if(Object.prototype.clone === 'undefined') 
Object.prototype.clone = function() {};

则输出结果为:0,1,clone
如果这时用for循环输出,则仍为0,1;也就是说for-in循环会将当前操作的数据源所属类型具有的属性遍历出来(同样对对象fish用for-in时,也会输出clone),所以就要求在使用for-in遍历时拉着一根弦:如果仅对对象自有属性操作,需要将继承来的属性加以剔除,比如用hasOwnProperty()方法。
Javascript 相关文章推荐
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
不使用ajax实现无刷新提交表单
Dec 21 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
javascript每日必学之封装
Feb 23 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
关于ES6尾调用优化的使用
Sep 11 Javascript
在JavaScript中如何使用宏详解
May 06 Javascript
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 #Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
Feb 11 #Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
Feb 11 #Javascript
js读取配置文件自写
Feb 11 #Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 #Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 #Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 #Javascript
You might like
PHP截取中文字符串的问题
2006/07/12 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
CI框架常用函数封装实例
2016/11/21 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
党支部书记岗位责任制
2014/02/11 职场文书
中青班党性分析材料
2014/02/16 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
源码安装apache脚本部署过程详解
2022/09/23 Servers