到目前为止,我已经学会了:
1)for
循环,我可以用来迭代对象中的索引,例如具有数字索引的键的数组。
2)for..in
循环也为我提供了可迭代和自定义属性以及继承属性。但是,它会遗漏其值未定义的属性。
例如
var array = [ 'Apples', , 'Pear' ];
array.newFn = function () { };
Array.prototype.anotherFn = function() { };
array.foo = bar;
for (var prop in array)
console.log(prop);
将遗漏索引1
,因为其值为undefined
。
然而,它会迭代newFn
,anotherFn
和foo
。
3)for..of
迭代值而不是键。不同之处在于,它仅迭代所有可迭代属性,省略了自定义属性,并省略了从原型链继承的那些属性。但是,这样做包括属性键或属性值或两者都具有值undefined
的值。同样,它仅包含对象的可迭代自身属性。
是否存在迭代的循环结构:
迭代密钥?一旦我拿到钥匙,我就可以得到价值。
如果没有内置循环结构,Object
keys
上必须有一些反射属性,或者某些反射属性可以让我看一眼?