相关疑难解决方法(0)

为什么JavaScript中的对象不可访问?

为什么默认情况下对象不可迭代?

我一直看到与迭代对象有关的问题,常见的解决方案是迭代对象的属性并以这种方式访问​​对象中的值.这似乎很常见,它让我想知道为什么对象本身不可迭代.

for...of默认情况下,像ES6 这样的语句很适合用于对象.因为这些功能仅适用于不包含{}对象的特殊"可迭代对象" ,所以我们必须通过箍来使这个对我们想要使用它的对象起作用.

for ... of语句创建一个循环迭代可迭代对象 (包括Array,Map,Set,arguments对象等)......

例如,使用ES6 生成器功能:

var example = {a: {e: 'one', f: 'two'}, b: {g: 'three'}, c: {h: 'four', i: 'five'}};

function* entries(obj) {
   for (let key of Object.keys(obj)) {
     yield [key, obj[key]];
   }
}

for (let [key, value] of entries(example)) {
  console.log(key);
  console.log(value);
  for (let [key, value] of entries(value)) {
    console.log(key);
    console.log(value);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在Firefox(支持ES6)中运行代码时,上面按照我期望的顺序正确记录数据:

hacky的输出

默认情况下,{}对象不可迭代,但为什么?缺点是否超过了可迭代对象的潜在好处?与此相关的问题是什么?

此外,由于{}对象是从"阵列状"集合和"可迭代的对象",如不同NodeList,HtmlCollection以及arguments …

javascript arrays iterator ecmascript-5 ecmascript-6

72
推荐指数
4
解决办法
5万
查看次数