js for in循环知识点遗漏

for in 循环

以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行

for (variable in object) {...}
var obj = {a:1, b:2, c:3};
    
for (var variable in obj) {//把属性名赋值给变量variable
  console.log(obj[variable]);//输出每一个属性的值,这是个反人类的操作,因为它在这里与数组取值相似,容易混淆
}

// Output:
// "variable.a = 1"
// "variable.b = 2"
// "variable.c = 3"

如果for in循环的对象是是一个对象,其variable的值为对象中的属性名;

for/in 循环不会遍历对象的的所有属性,只有“可枚举”的属性才会遍历到。由JS语言核心定义的内置方法就不是“可枚举的”。

比如所有对象都有的属性toString(),   fori/in不会循环不可枚举的toString()这个属性,除了内置方法,还有很多内置对象的属性也是”不可枚举的”。而代码中定义的所有属性和方法都是“可枚举的”。对象可以继承其他对象的属性,那些继承的自定义属性也可以用for/in枚举除出来。

如果for/in的循环体删除了还未枚举的属性,那么这个属性不会再枚举到。如果循环体定义了对象的新属性,这些属性通常也不会枚举到(JS的有些实现是可以枚举那些在循环体中新增加的继承属性的)。

属性枚举的顺序受浏览器厂商对JS的实现决定。


猜你喜欢

转载自blog.csdn.net/ljd914040633/article/details/80765808