js中for in语句的用法讲解


Posted in Javascript onApril 24, 2015
 for(variable in object)

   statement

variable 是声明一个变量的var语句,数组的一个元素或者是对象的一个属性
在循环体内部,对象的一个属性名会被作为字符串赋给变量variable。

注意:对象的有些属性以相同的方式标记成了只读的,永久的(不可删除的)或者不可列举的,这些属性使用for/in循环不能枚举出来。虽然所有的用户定义的属性都可以枚举,但是许多内部属性,包括所有的内部方法都是不可枚举的。另外对象可以继承其他对象的属性,那些已继承的用户定义的属性可以使用for/in 循环枚举出来。

for(var i=0;i<len;i++)这样的用法一般都可以用for in 来替代。

例如:

var a = ["a","b","c"];

for(var el in a){

alert(a[el]);

}

这个就是穷举出a中的所有元素,当然上面这个例子是可以用
for(var i=0,len=a.length;i<len;i++){

alert(a[i]);

}

这种方式进行循环列出的,不过有时候这种方式就不一定奏效了。
例如:
var a = {"first":1,"second":2,"third":3};

这个时候就只能用for in来穷举了。

一个对象是否可以进行for in穷举,我们可以通过propertyIsEnumerable属性来判断,说明如下:

object.propertyIsEnumerable(propname)是否可以通过for/in循环看到属性
propname 一个字符串,包含object属性的名称
如果object具有名为propname的非继承属性,而且该属性是可枚举的(即用for/in循环可以枚举它),则返回true

描述:

用for/in语句可以遍历一个对象"可枚举"的属性,但并非一个对象的所有属性都是可枚举的,通过JavaScript代码添加到对象的属性是可枚举的,而内部对象的预定义属性(如方法)通常是不可枚举的.

propertyIsEnumerable()方法不检测原型链,这意味它只适用于对象的局部属性,不能检测继承属性的可枚举性

var o=new Object();

o.x=3.14;

o.propertyIsEnumerable("x");//true

o.propertyIsEnumerable("y");//false have not the property

o.propertyIsEnumerable("toString");//false inherited

Object.prototype.propertyIsEnumerable("toString");//false nonenumerable
Javascript 相关文章推荐
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
五段实用的js高级技巧
Dec 20 Javascript
计算新浪Weibo消息长度(还可以输入119字)
Jul 02 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
8个实用的jQuery技巧
Mar 04 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
ajax读取数据后使用jqchart显示图表的方法
Jun 10 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
May 23 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
详解nvm管理多版本node踩坑
Jul 26 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
JScript中的条件注释详解
Apr 24 #Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 #Javascript
js闭包实现按秒计数
Apr 23 #Javascript
jQuery中使用each处理json数据
Apr 23 #Javascript
javascript数组去重方法汇总
Apr 23 #Javascript
javascript实现英文首字母大写
Apr 23 #Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 #Javascript
You might like
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
python生成日历实例解析
2014/08/21 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python中static相关知识小结
2018/01/02 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
Python Pillow Image Invert
2019/01/22 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
农村党支部先进事迹
2014/01/14 职场文书
道德模范先进事迹
2014/02/14 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Nginx配置使用详解
2022/07/07 Servers