和 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 循环 详细介绍
可以很容易理解javascript的for in循环的使用
1.普通的For循环 在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环 结构体内的每一行,使用 \ 作为改行的行首关键字。对于循环中的变量,可以在 IN 关键字后给出所有变...
对于循环语句for的举例,用来计算1到10的阶乘。
for i in range(50): plt.savefig(%d.jpg%(i+1)) 就解决了,出去50组图片。 和print格式化输出有异曲同工之妙: print (she is %d years old%(18)) 以上这篇python 利用for循环 保存多个图像或者文件的实例就是小...
for循环嵌套语法格式: for 取值 in 序列或迭代对象: for 取值 in 序列或迭代对象: 语句块 注:for语句可以嵌套任意类型的循环语句
(2)for..in循环; 使用for循环进行迭代数组对象,想必大家都已经司空见惯了。但是,使用for.. in循环时,大家可要注意了,为什么这么说呢?大家听我娓娓道来…. javascript提供了一种特殊的循环(也就是for .. in...
for循环遍历数组 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点.pdf 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点.pdf 利用for循环把遍历数组中的元素依次获取出来 数组笔记...
vue中循环遍历使用的指令是v-for 1.v-for遍历数组 (1)value in arr 遍历数组中的元素 (2)(value,index) in arr 遍历数组中的元素和数组下标 运行代码: <body> <li v-for=value>{{value}}</li><br> ...
与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。 小结 当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in...
语法格式: for 取值in序列或迭代对象: 语句块 在for循环中,可遍历一个序列或迭代对象的所有元素。...函数range(M,N)会生成一个M到(N-1)个数字列表,for循环就会循环N-1-M次,循环语句块会执行N-1-M。
for/in – 循环遍历对象的属性 while – 当指定的条件为 true 时循环指定的代码块 do/while – 同样当指定的条件为 true 时循环指定的代码块 1. in运算符:要求其左边的运算数是一个字符串,或可以被转换为字符串...
for..in循环; 一、for循环 不足: 在于每次循环的时候数组的长度都要去获取; 终止条件要明确; 在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象。通常的循环形式如下:...
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)]
1.FOR IN 这种结构,循环的次数由"IN"关键字后⾯的list变量个数控制。⽰例如下: 运⾏结果: 这个例⼦中,"IN"后⾯直接写了3个常量,则表⽰运⾏三次。每个循环${n}被依次赋予3个常量中的1个。当然"IN"后⾯也可以写...
例如: ``` fruits = ['apple', 'banana', 'orange', 'grape'] for fruit in fruits: print(fruit) ``` 输出结果为: ``` apple banana orange grape python-for-循环例子全文共9页,当前为第1页。 ``` python-for-...
For … in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目 注意: 1、else 部分是可选的。当循环中包含它时,它循环中包含它时,它总会在 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()函数 for 循环 For … in 语句是另⼀种循环语句,其特点是会在⼀系列对象上进⾏迭代(Iterates),即它会遍历序列中的每⼀个项⽬ 注意: 1、else ...
for 变量列表 in 可迭代对象: 语句块1 else: 语句块2 for循环是用来遍历可迭代对象的数据元素。可迭代对象是指能依次获取数据元素的对象,包括:字符串 str、列表 list、元组 tuple、字典 dict 、集合set等。 for循环...