`
hzxulei
  • 浏览: 8261 次
  • 性别: 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 循环 详细介绍

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

    JavaScript中的for/in循环的例子

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

    Robot Framework 教程 - 使用For循环

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

    for循环执行过程

    对于循环语句for的举例,用来计算1到10的阶乘。

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

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

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

    for循环嵌套语法格式: for 取值 in 序列或迭代对象: for 取值 in 序列或迭代对象: 语句块 注:for语句可以嵌套任意类型的循环语句

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

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

    利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点.pdf

    for循环遍历数组 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点.pdf 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点.pdf 利用for循环把遍历数组中的元素依次获取出来 数组笔记...

    浅析vue中常见循环遍历指令的使用 v-for

    vue中循环遍历使用的指令是v-for 1.v-for遍历数组 (1)value in arr 遍历数组中的元素 (2)(value,index) in arr 遍历数组中的元素和数组下标 运行代码: <body> <li v-for=value>{{value}}</li><br>  ...

    Javascript中的for in循环和hasOwnProperty结合使用

    与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。 小结 当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in...

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

    语法格式: for 取值in序列或迭代对象: 语句块 在for循环中,可遍历一个序列或迭代对象的所有元素。...函数range(M,N)会生成一个M到(N-1)个数字列表,for循环就会循环N-1-M次,循环语句块会执行N-1-M。

    javascript中for/in循环及使用技巧

    for/in – 循环遍历对象的属性 while – 当指定的条件为 true 时循环指定的代码块 do/while – 同样当指定的条件为 true 时循环指定的代码块 1. in运算符:要求其左边的运算数是一个字符串,或可以被转换为字符串...

    跟我学习javascript的for循环和for…in循环

    for..in循环; 一、for循环 不足: 在于每次循环的时候数组的长度都要去获取; 终止条件要明确; 在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象。通常的循环形式如下:...

    Python杨辉三角形的打印。for循环和列表的方式

    N = [1] n=eval(input("请输入行数:")) for i in range(n): L = N.copy() for j in range(len(L)): temp = str(L[j]) L[j] = temp l = ' '.join(L).... N = [N[k] + N[k-1] for k in range(i+2)]

    robotFramework——FOR循环语句.pdf

    1.FOR IN 这种结构,循环的次数由"IN"关键字后⾯的list变量个数控制。⽰例如下: 运⾏结果: 这个例⼦中,"IN"后⾯直接写了3个常量,则表⽰运⾏三次。每个循环${n}被依次赋予3个常量中的1个。当然"IN"后⾯也可以写...

    python-for-循环例子.docx

    例如: ``` fruits = ['apple', 'banana', 'orange', 'grape'] for fruit in fruits: print(fruit) ``` 输出结果为: ``` apple banana orange grape python-for-循环例子全文共9页,当前为第1页。 ``` python-for-...

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

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

    python中for循环变量作用域及用法详解

    return [lambda x: x**i for i in range(1,5,2)] print([f(3) for f in foo()]) 伙伴们,你们认为这里产生的结果是什么呢?我们再来看下这题的变体: 代码:2 def foo(): functions=[] for i in range(1,5,2): ...

    python的for循环语句range-Python基础教程:for循环语句与range()函数.pdf

    python的for循环语句range_Python基础教程:for循环语句与 range()函数 for 循环 For … in 语句是另⼀种循环语句,其特点是会在⼀系列对象上进⾏迭代(Iterates),即它会遍历序列中的每⼀个项⽬ 注意: 1、else ...

    Python程序设计:for循环.pptx

    for 变量列表 in 可迭代对象: 语句块1 else: 语句块2 for循环是用来遍历可迭代对象的数据元素。可迭代对象是指能依次获取数据元素的对象,包括:字符串 str、列表 list、元组 tuple、字典 dict 、集合set等。 for循环...

Global site tag (gtag.js) - Google Analytics