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 相关文章推荐
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
jQuery当鼠标悬停时放大图片的效果实例
Jul 03 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
用svg制作富有动态的tooltip
Jul 17 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 Javascript
javascript input输入框模糊提示功能的实现
Sep 25 Javascript
jQuery 改变P标签文本值方法
Feb 24 jQuery
Vue2.0中集成UEditor富文本编辑器的方法
Mar 03 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
Apr 09 Javascript
WebSocket的简单介绍及应用
May 23 Javascript
JS实现图片切换特效
Dec 23 Javascript
解决vue+webpack项目接口跨域出现的问题
Aug 10 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执行速度全攻略
2006/10/09 PHP
实用函数10
2007/11/08 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php include类文件超时问题处理
2015/02/06 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
js 目录列举函数
2008/11/06 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
JS跨域问题详解
2014/11/25 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python的sorted用法详解
2019/06/25 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
毕业自我评价范文
2013/11/17 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python
Python如何将list中的string转换为int
2022/07/15 Ruby