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 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
JavaScript面向对象编程
Mar 02 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
Jun 07 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
微信小程序获取用户openid的实现
Dec 24 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 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使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
php中的动态调用实例分析
2015/01/07 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
jquery延迟对象解析
2016/10/26 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python实现通讯录功能
2018/02/22 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
基于Python的OCR实现示例
2020/04/03 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
python用Configobj模块读取配置文件
2020/09/26 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
工业自动化毕业生自荐信范文
2014/01/04 职场文书
求职信格式要求
2014/05/23 职场文书
影子教师研修方案
2014/06/14 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS