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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
jQuery ajax dataType值为text json探索分享
Sep 23 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
jQuery循环遍历子节点并获取值的方法
Apr 14 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
解决vue打包项目后刷新404的问题
Mar 06 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 Javascript
javaScript实现一个队列的方法
Jul 14 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
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/05/07 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
小程序实现分类页
2019/07/12 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
python Django模板的使用方法
2016/01/14 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
工艺工程师工作职责
2013/11/23 职场文书
实习教师自我鉴定
2013/12/09 职场文书
医院护士的求职信范文
2013/12/26 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers