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 相关文章推荐
js右键菜单效果代码
Jul 21 Javascript
ext 列表页面关于多行查询的办法
Mar 25 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
基于jquery中children()与find()的区别介绍
Apr 26 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
jsPDF导出pdf示例
May 02 Javascript
jquery判断元素是否隐藏的多种方法
May 06 Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
详解Nuxt.js中使用Element-UI填坑
Sep 06 Javascript
小程序富文本提取图片可放大缩小
May 26 Javascript
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
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
PHP函数积累总结
2019/03/19 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
js实现电灯开关效果
2021/01/19 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
简单理解Python中的装饰器
2015/07/31 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
详解python 注释、变量、类型
2018/08/10 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
对python生成业务报表的实例详解
2019/02/03 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
采购部主管岗位职责
2014/01/01 职场文书
森林防火宣传标语
2014/06/27 职场文书
毕业生工作求职信
2014/06/30 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
面试感谢信范文
2015/01/22 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android