代码之家  ›  专栏  ›  技术社区  ›  phil o.O

对象不保持顺序,但可以正确地增加属性。为什么?

  •  1
  • phil o.O  · 技术社区  · 6 年前

    虽然我知道如果对下面的结构进行迭代,它将不会保持顺序,但我不明白为什么 id++ 作品。我认为增加 id 依赖于像数组一样维护顺序的结构。它怎么聪明到可以增值呢?我找不到文件。请帮忙。

    let id = 0;
    const cars = {
        "ford": {
            "model": "focus",
            "id": id++
        },
        "honda": {
            "model": "civic",
            "id": id++
        },
        "toyota": {
            "model": "corolla",
            "id": id++
        }
    }
    console.log(cars);
    { 
        ford: { model: 'focus', id: 0 },
        honda: { model: 'civic', id: 1 },
        toyota: { model: 'corolla', id: 2 } 
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Bergi    6 年前

    对象文本是按照源外观的顺序计算的,这与其他js代码非常相似。因此,第一个属性值的表达式总是在第二个属性值之前求值。

    这个初始化的顺序与对象的属性稍后可以枚举的顺序无关,正如您所指出的,后者不一定相同。