Ind*_*nix 6 javascript object-properties console.log
曾经是这样,当我使用 console.log(obj) 在 Javascript 中显示对象的属性时,属性会按字母顺序显示。最近,这种情况似乎发生了变化。我认为,新订单接近性实际上是如何存储在代码,(虽然我的印象是,对象的属性没有有一个“真实”为了固定在开始阶段)。
然而,对于大型、复杂的类,按字母顺序显示对于查找我正在寻找的属性非常有用。是否可以像以前一样按字母顺序显示属性?
(我还想知道当前属性的“代表”顺序究竟是什么,以及它是如何确定的。)
尽管我的印象是对象属性一开始就没有“真正的”固定顺序
从 ES2015 开始,它们确实如此(甚至以前被豁免的操作现在也被纳入其中),但您可能希望继续表现得好像它们不这样做一样。对于自己的属性,这是它们添加到对象的顺序(整数索引属性除外,它们按数字顺序列在其他属性之前);详细信息在这个问题的答案中。(继承的属性没有定义的顺序,尽管引擎对它们的处理方式相当一致:它们将它们列在自己的属性之后,遵循相同的顺序规则。但同样,这没有指定。)
最近,这种情况似乎有所改变。
从实验上看,它现在看起来像是遵循属性顺序的。
您可以给自己一个实用函数,用于创建一个新对象,并按字母顺序添加属性:
function logAlpha(obj) {
const x = {};
for (const key of Object.keys(obj).sort()) {
x[key] = obj[key];
}
console.log(x);
}
Run Code Online (Sandbox Code Playgroud)
当然,与 不同的是console.log(obj),这将是一个快照,而不是原始对象的实时链接。
您可以做很多调整(包括原型属性,包括原型本身,包括完整原型链的排序版本等),但这就是要点。
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |