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 相关文章推荐
解决jquery的.animate()函数在IE6下的问题
Dec 03 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
js截取中英文字符串、标点符号无乱码示例解读
Apr 17 Javascript
利用函数的惰性载入提高javascript代码执行效率
May 05 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
VUE 解决mode为history页面为空白的问题
Nov 01 Javascript
如何基于filter实现网站整体变灰功能
Apr 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中将数组存到文件里的实现代码
2012/01/19 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
简述vue中的config配置
2018/01/23 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
python添加模块搜索路径方法
2017/09/11 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
Why do we need Unit test
2013/01/03 面试题
final, finally, finalize的区别
2012/03/01 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
医学专业大学生求职信
2014/07/12 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
超市员工辞职信范文
2015/05/12 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
python实现会员管理系统
2022/03/18 Python