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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
javascript 面向对象编程基础:继承
Aug 21 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
实现一个简单的vue无限加载指令方法
Jan 10 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
Feb 06 Javascript
详解TypeScript中的类型保护
Apr 29 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导出生成word的方法
2015/12/25 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
一个简单的python程序实例(通讯录)
2013/11/29 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python实现各种插值法(数值分析)
2019/07/30 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
Python调用Windows命令打印文件
2020/02/07 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
大学自我鉴定范文
2013/12/26 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
应届毕业生自荐信
2015/03/04 职场文书
罚款通知怎么写
2015/04/22 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle