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 面向对象继承
Nov 26 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
Apr 17 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
Aug 05 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
jQuery层级选择器实例代码
Feb 06 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
Jun 12 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
在Vue 中使用Typescript的示例代码
Sep 10 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
JavaScript实现多文件下载方法解析
Aug 07 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中防止SQL注入实现代码
2011/02/19 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js实现列表按字母排序
2020/08/11 Javascript
Python模拟登录的多种方法(四种)
2018/06/01 Python
Python: 传递列表副本方式
2019/12/19 Python
python代码xml转txt实例
2020/03/10 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
综合实践活动总结
2014/05/05 职场文书
合作意向书
2014/07/30 职场文书
工作年限证明模板
2015/06/15 职场文书
运动会开幕式致辞
2015/07/29 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android