JavaScript for...in 循环的陷阱

最近有好几次用到for...in循环的时候都遇到了错误,循环的索引总是会指向一些不应该被指向的元素。之前都是换用普通的for循环来修改。今天在网上搜索了一些关于for...in的博文,发现了问题的所在。转载如下:


原文地址:http://www.mangguo.org/javascript-for-in-loop-trap/

For…In 声明用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。

先定义一个构造函数:

var Status = function(arg){
    this.arg = arg;
}
Status.prototype.getStatus = function(){
    return this.arg;
}

接着实例化:

var instance = new Status('a test string');
instance.getStatus();
instance.ooxx = 'ooxx';

用 for…in 遍历属性:

for(i in instance){
    console.log(i);
}

看下运行结果:

arg

ooxx

getStatus

可见原型方法也被遍历出来的,但事实上往往并不想要。于是需要这么干:

for(i in object){
    if(object.hasOwenProperty(i)){
        //...
    }
}

这样就能把函数和原型属性方法过滤掉鸟~
参考:《JavaScript 语言精粹》第 120 页,饺子哥威武


学习心得:

在进一步的试验中,我发现for...in循环遍历的元素包括数组的元素以及对象的成员(也就是对象中this关键字后跟的属性和方法),以及通过prototype关键字添加给数组或者对象的属性和方法。也就是说,for...in循环中的索引项不仅仅是基本的数字索引,还会包含其他一些意料之外的索引项(对象的属性名、方法名,prototype添加的方法名等)。因此,在数组或者对象的成分比较复杂的情况下,使用普通的for循环将会更加安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ArcGIS API for JavaScript 4.x 是由 Esri 公司提供的 JavaScript API,用于在 web 应用程序中使用 ArcGIS 地图和地理空间数据。它提供了一组用于创建丰富地图应用程序的工具,包括地图显示、图层控制、查询和分析等功能。 ### 回答2: ArcGIS API for JavaScript 4.x 是由 Esri 公司开发的一款基于 web 的地理信息系统(WebGIS)开发工具集。它提供丰富的功能和工具,可以用来构建高质量的地图、应用程序和应用程序界面。 ArcGIS API for JavaScript 4.x 引入了许多新特性和改进,包括以下内容: 1. 优化性能:ArcGIS API for JavaScript 4.x 是基于 WebGL 技术实现的,可以更快速地加载和渲染地图。这个版本还引入了 SceneView 和 MapView,可以更加快速和高效地渲染 3D 场景。 2. 全新的视觉外观:ArcGIS API for JavaScript 4.x 引入了一些全新的样式,可以更好地展现数据。开发人员可以选择从一系列令人惊叹的符号和颜色方案中选择。 3. 更好的交互性和数据分析功能:ArcGIS API for JavaScript 4.x 提供了更好的交互性和数据分析工具,可以让用户更加轻松地探索和分析地图数据。例如,这个版本使得开发人员可以使用滤镜和统计功能探索和分析数据。 4. 多平台支持:ArcGIS API for JavaScript 4.x 可以在不同的平台上运行,包括桌面浏览器、移动设备和虚拟现实(VR)设备。 总之,ArcGIS API for JavaScript 4.x 是一款强大的工具集,可以帮助开发人员构建出高质量的地图应用程序。它提供了许多新特性和改进,包括优化性能、全新的视觉外观、更好的交互性和数据分析功能,以及多平台支持。 ### 回答3: ArcGIS API for JavaScript 4.x是一种WebGIS软件开发工具包,旨在提供可靠、高性能和易于使用的API,帮助开发人员构建可移植性强、交互性好的 WebGIS 应用。 ArcGIS API for JavaScript 4.x具有以下特点: 1.现代的Web GIS开发工具 ArcGIS API for JavaScript 4.x是一个现代的Web GIS开发工具,它可以帮助开发者利用最新的Web技术来构建高效、交互性好的WebGIS应用,无论时刻或地点。 2.支持多种数据格式 ArcGIS API for JavaScript 4.x支持多种数据格式,包括点、线、面、网格、图像、视频等,可以帮助开发者轻松地展示和分析地理信息数据。 3.交互性强 ArcGIS API for JavaScript 4.x允许开发者创建具有交互性的应用程序,包括可视化和图形用户界面(GUI)。开发人员可以轻松地添加地图、图层、标签、图例和其他控件,以便用户可以与地图积极地交互。 4.易于开发 ArcGIS API for JavaScript 4.x非常易于开发,开发者可以使用自己的Web开发工具(如Visual Studio或Sublime等),无需安装复杂的GIS软件或插件。开始撰写代码需要一些GIS基础知识和Javascript开发经验。 5.高性能 ArcGIS API for JavaScript 4.x拥有高性能的地图渲染引擎,支持大量复杂数据文件和多层次渲染操作,以及高效的数据压缩和缓存机制,为地图应用提供良好的性能。 总而言之, ArcGIS API for JavaScript 4.x提供了丰富的功能和细节控制能力,使开发人员能够快速构建出具有高度个性化的WebGIS应用程序,满足不同用户需求。无论是企业的GIS解决方案,还是个人开发GIS应用, ArcGIS API for JavaScript 4.x是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值