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 相关文章推荐
javascript 常用方法总结
Jun 03 Javascript
jquery ui resizable bug解决方法
Oct 26 Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 Javascript
JavaScript中Null与Undefined的区别解析
Jun 30 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
基于js实现判断浏览器类型代码实例
Jul 17 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
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
javascript常用对话框小集
2013/09/13 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
七一表彰活动方案
2014/01/18 职场文书
建筑横幅标语
2014/10/09 职场文书
聘任书范文大全
2015/09/21 职场文书
社会心理学学习心得体会
2016/01/22 职场文书