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 input 数字验证代码
Jul 30 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
详解参数传递四种形式
Jul 21 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
JavaScript设计模式之代理模式简单实例教程
Jul 03 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 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获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python实现合并两个排序的链表
2019/03/03 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python中无限循环需要什么条件
2020/05/27 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
表彰先进集体通报
2014/01/12 职场文书
经典团队口号
2014/06/06 职场文书
火锅店的活动方案
2014/08/15 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
工作态度不端正检讨书
2014/10/04 职场文书