`
hzxulei
  • 浏览: 8576 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

for in 循环

阅读更多
和 in 操作符一样,for in 循环同样在查找对象属性时遍历原型链上的所有属性。

注意: for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length 属性。

// 修改 
Object.prototypeObject.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) { console.log(i); // 输出两个属性:bar 和 moo}



由于不可能改变 for in 自身的行为,因此有必要过滤出那些不希望出现在循环体中的属性, 这可以通过 Object.prototype 原型上的 hasOwnProperty 函数来完成。

注意: 由于 for in 总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能。


使用 hasOwnProperty 过滤

// foo 变量是上例中的for(var i in foo) {   
 if (foo.hasOwnProperty(i)) {        console.log(i);    }}



这个版本的代码是唯一正确的写法。由于我们使用了 hasOwnProperty,所以这次只输出 moo。 如果不使用 hasOwnProperty,则这段代码在原生对象原型(比如 Object.prototype)被扩展时可能会出错。

一个广泛使用的类库 Prototype 就扩展了原生的 JavaScript 对象。 因此,但这个类库被包含在页面中时,不使用 hasOwnProperty 过滤的 for in 循环难免会出问题。


总结

推荐总是使用 hasOwnProperty。不要对代码运行的环境做任何假设,不要假设原生对象是否已经被扩展了。
分享到:
评论

相关推荐

    linux中 shell编程 for in 循环 详细介绍

    `for` 循环的一个常见用法是通过 `for in` 格式来遍历一系列元素。本文将详细解释 `for in` 循环的不同用法,并提供具体的示例代码。 #### `for in` 循环的基本语法 `for in` 循环的基本语法如下: ```bash for ...

    for循环执行过程

    在这个特定的例子中,我们看到的是Java中的`for`循环,它被用来计算从1到10的阶乘。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,表示为n!。例如,5的阶乘(5!)就是5×4×3×2×1=120。 ...

    JavaScript中的for/in循环的例子

    可以很容易理解javascript的for in循环的使用

    Windows bat脚本之for循环用法详解

    在cmd窗口中,for循环的格式为`for %I in (command1) do command2`,而在批处理文件中,格式应为`for %%I in (command1) do command2`。需要注意的是,批处理文件中形式变量的引用需使用双百分号`%%I`,而在cmd窗口...

    robotFramework——FOR循环语句.pdf

    FOR IN循环的基本形式是将一个列表或一系列值与`IN`关键字配对,以迭代列表中的每个元素。例如: ``` :FOR ${n} IN 1 2 3 \ Log ${n} ``` 在这个例子中,循环会运行三次,每次将`${n}`分别赋值为1、2和3。如果...

    for 循环练习题目

    for num in range(1, n * n + 1): matrix[row][col] = num row -= 1 col += 1 if row row = n - 1 if col >= n: col = 0 if matrix[row][col]: row += 1 col -= 1 return matrix ``` #### 16. 回文数 ...

    Python语言基础:for循环嵌套.pptx

    for n in range(1, m + 1): # 内层循环,列号 print(f"{n}*{m}={m*n}", end=" ") # 输出乘法式 print() # 每行结束后换行 ``` 在这个例子中,外层循环初始化变量`m`,从1到9,每次迭代会执行内层循环。内层循环...

    Java增强的for循环

    * 虽然forin循环会被编译器转化为Iterator操作,但是使用forin时,Iterator是不可见的,所以如果需要调用Iterator.remove()方法,或其他一些操作,forin循环就有些力不从心了。 Java增强的for循环可以使代码更加...

    Shell中的for循环总结

    1. **基础for循环语法**: ```bash for 变量 in 值列表 do # 循环体 done ``` 这种形式的for循环常用于遍历字符串、数组或命令的输出。例如: ```bash for i in `ls` do echo $i done ``` 2. **C语言...

    for 循环的使用技巧

    当条件检查始终为真时,如`for i in range(0, -1, -1)`,将形成无限循环。这种情况下,通常需要配合`break`语句来中断循环。 **7. 遍历其他可迭代对象:** `for`循环不仅可以遍历数组,还可以遍历字符串、元组、...

    Python语言基础:for循环语句.pptx

    for循环会遍历这个序列,因此会执行循环体`N-1`次。 在实际应用中,for循环常用于遍历列表元素、计算累加和、实现特定的算法等。例如,计算15以内偶数的和,可以这样写: ```python sum = 0 for i in range(0, 15,...

    Robot Framework 教程 - 使用For循环

    1.普通的For循环 在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环 结构体内的每一行,使用 \ 作为改行的行首关键字。对于循环中的变量,可以在 IN 关键字后给出所有变...

    VB For each循环实例

    在VB(Visual Basic)编程语言中,`For Each`循环是一种非常重要的控制结构,它用于遍历集合或数组中的每一个元素。在这个实例中,我们将深入理解`For Each`循环的工作原理,以及如何在实际编程中有效地使用它。 `...

    Python for循环与range函数的使用详解

    For … in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目 注意: 1、else 部分是可选的。当循环中包含它时,它循环中包含它时,它总会在 for 循环结束后开始...

    Lua的for in和pairs1

    Lua中的for in和pairs 在 Lua 编程语言中,for in 和 pairs 是两个非常重要的迭代语法,它们可以用来遍历表中的元素。下面我们将详细讲解它们的语法、实现和差异。 for in 语法 for in 语法的基本格式如下: ```...

    for循环简单操作 数字的遍历

    - **遍历对象属性**:通过`for...in`循环遍历对象的可枚举属性。 ```javascript const obj = { name: 'John', age: 30 }; for (let prop in obj) { console.log(prop + ': ' + obj[prop]); } ``` - **无限循环**...

    bat中for循环,实现变量自增的2种方式

    for /L %%i in (1,1,10) do ( echo Value: %%i set /a counter+=1 ) echo Final value of counter: %counter% ``` 在这个例子中,`/L`选项定义了一个从1到10的线性循环。在每次循环中,`counter`变量增加1,然后...

    vue-for循环嵌套操作示例

    v-for指令的基本语法是v-for="item in items",其中items是你想要迭代的数组,item是当前项在数组中的引用。在文档中的实例代码里,我们看到了如何使用v-for来迭代parentList数组,并在每个父列表项内部再迭代一个...

    python 利用for循环 保存多个图像或者文件的实例

    for i in range(50): plt.savefig(%d.jpg%(i+1)) 就解决了,出去50组图片。 和print格式化输出有异曲同工之妙: print (she is %d years old%(18)) 以上这篇python 利用for循环 保存多个图像或者文件的实例就是小...

    JavaScript中for..in循环陷阱介绍

    (2)for..in循环; 使用for循环进行迭代数组对象,想必大家都已经司空见惯了。但是,使用for.. in循环时,大家可要注意了,为什么这么说呢?大家听我娓娓道来…. javascript提供了一种特殊的循环(也就是for .. in...

Global site tag (gtag.js) - Google Analytics