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 相关文章推荐
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
jQuery中的$.ajax()方法应用
May 06 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
js+css绘制颜色动态变化的圈中圈效果
Jan 27 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
OpenLayer学习之自定义测量控件
Sep 28 Javascript
JavaScript 实现轮播图特效的示例
Nov 05 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
基于mysql的论坛(2)
2006/10/09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
python主要用于哪些方向
2020/07/05 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
毕业生个人求职自荐信
2014/02/26 职场文书
学习型班组申报材料
2014/05/31 职场文书
社区文艺活动方案
2014/08/19 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android