for-in循环(for-in Loops)

有个很重要的hasOwnProperty()方法,当遍历对象属性的时候可以过滤掉从原型链上下来的属性。

// 对象var man = {   hands: 2,   legs: 2,   heads: 1};

// 在代码的某个地方// 一个方法添加给了所有对象if (typeof Object.prototype.clone === "undefined") {   Object.prototype.clone = function () {};}
// 1.// for-in 循环for (var i in man) {   if (man.hasOwnProperty(i)) { // 过滤      console.log(i, ":", man[i]);   }}/* 控制台显示结果hands : 2legs : 2heads : 1*/// 2.// 反面例子:// for-in loop without checking hasOwnProperty()for (var i in man) {   console.log(i, ":", man[i]);}/*控制台显示结果hands : 2legs : 2heads : 1clone: function()*/

另外一种使用hasOwnProperty()的形式是取消Object.prototype上的方法。像是:



for (var i in man) {   if (Object.prototype.hasOwnProperty.call(man, i)) { // 过滤      console.log(i, ":", man[i]);   }}

其好处在于:在man对象重新定义hasOwnProperty情况下,避免命名冲突;也避免了长属性查找对象的所有方法,你可以使用局部变量“缓存”它。

var i, hasOwn = Object.prototype.hasOwnProperty;for (i in man) {    if (hasOwn.call(man, i)) { // 过滤        console.log(i, ":", man[i]);    }}
 

严格来说,不使用hasOwnProperty()并不是一个错误。根据任务以及你对代码的自信程度,你可以跳过它以提高些许的循环速度。但是当你对当前对象内容(和其原型链)不确定的时候,添加hasOwnProperty()更加保险些。


for-in循环(for-in Loops)

时间: 2024-10-01 12:54:56

for-in循环(for-in Loops)的相关文章

运行循环(Run Loops)

运行循环是与线程相关的基础工具的一部分.运行循环是一个用来安排工作并协调传入事件接收的一个事件处理循环.运行循环的目的是当需要工作的时候,让你的线程处于忙碌状态:当没有工作时,让你的线程处于睡眠状态. 运行循环管理并不是完全自动运行,你必须设计线程代码在适当的时间启动运行循环并响应传入的事件.Cocoa和核心基础提供运行循环对象来帮助你配置和管理你的线程运行循环.你的引用不需要显式的创建这些对象,每个线程,包括应用的主线程都有一个关联的运行循环对象.然而,只有次要线程需要显式的运行他们的运行循环

oracle:IF语句 Loop循环 Cursor的用法(一)

1 概述 在大多数时候我们在设计pl-sql程序的时候都遵循下面的步骤:  打开游标 ->开始循环 -> 从游标中取值->检查那一行被返回 -> 处理 -> 关闭循环 -> 关闭游标 2 格式:复制内容到剪贴板/ 程序代码 CURSOR <游标名称> IS<游标名称>%ROWTYPE;BEGIN  OPEN <游标名称>  LOOP    FETCH <游标名称> INTO ;    EXIT WHEN <游标名称&

《编程导论(Java)&amp;#183;3.2.4 循环语句》

本文全然复制<编程导论(Java)·3.2.4 循环语句>的内容.除[]中的说明文字.请阅读和比較其它编程教材. 我知道.假设我是一个刚開始学习的人,<编程导论(Java)>非常不适合自学.建议同学们阅读时,一定选择一本其它的书同一时候看,或上网. ,由于太一般或简单的内容.或我不想留在书中占用篇幅的东西,都省略了. 毕竟,网络上相关的一般描写叙述的内容.大把大把. 卓别林在<摩登时代>中.说明流水线上的工人在高强度下重复运行同一个动作是多么令人郁闷.然而循环/迭代(l

《编程导论(Java)&#183;3.2.4 循环语句》

本文完全复制<编程导论(Java)·3.2.4 循环语句>的内容,除[]中的说明文字.请阅读和比较其他编程教材. 我知道,如果我是一个初学者,<编程导论(Java)>很不适合自学.建议同学们阅读时,一定选择一本其他的书同时看,或上网.,因为太一般或简单的内容.或我不想留在书中占用篇幅的东西,都省略了.毕竟,网络上相关的一般描述的内容,大把大把. 卓别林在<摩登时代>中,说明流水线上的工人在高强度下反复执行同一个动作是多么令人郁闷.然而循环/迭代(loop/iterati

Swift控制语句

前言 Swift提供了类似C语言的流程控制结构,包括可以多次执行任务的for和while循环.还有基于特定条件选择执行不同代码分支的if.guard和switch语句,还有控制流程跳转到其他代码的break和continue语句. Swift增加了for-in循环,用来更简单地遍历数组.字典.区间.字符串和其他序列类型. Swift的switch语句比C语言中更加强大.在C语言中,如果某个case不小心漏写了break,这个case就会贯穿至下一个case,而Swift无需写break,所以不会

iOS的系统层级结构和相关的框架

一,概述 iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch layer).理解iOS的系统构架,对我们日常开发有很大帮助.其实iOS是基于UNIX的,所以我们完全可以相信这个操作系统,要知道从系统的稳定性上来说它要比其他操作系统的产品好很多. 二, IOS操作系统的层次结构及相关框架 1.Core OS 核心层:包含Accelerate Framew

【iOS开发之旅】iOS系统架构

iOS的系统架构分为四个层次:核心操作系统层(Core OS ).核心服务层(Core Services ).媒体层(Media )和可触摸层(Cocoa Touch ).下面是IOS系统结构图. 一.Core OS(核心操作系统层) 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以

字符串和字符

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/03_Strings_and_Characters.html 本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 比较字符串 字符串大小写 Unicode String是例如“hello, world”,“海贼王” 这样的有序的Character(字符)类型的值的集

字符串和字符(Strings and Characters)

字符串和字符(Strings and Characters) 本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 比较字符串 字符串大小写 Unicode String是例如“hello, world”,“海贼王” 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String和Character类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本信息.

Unity3D UGUI之DoTweenAnimation脚本控制动画方法

DOTweenAnimation脚本: Loops循环:-1时即永久循环播放. Loops Type 是选择播放模式. Ease属性里有很多,暂时只知道Linear的效果,其他有待单独写. ID下面可以选择移动动画模式:TO or From.