ES6 属性顺序:是否保证所有操作?
问题:
ES6引入对象的属性顺序。但是这个新功能是否能保证所有对象属性枚举操作(例如 for-in 循环和 Object.keys)都有明确定义的顺序?
ES2015-ES2019 的答案:
不,不适用于所有操作。
对于for-in 循环、Object.keys 和 JSON.stringify,ES6 不要求特定的枚举顺序。遗留兼容性问题影响了这一决定。
对于 for-in 循环使用的 [[Enumerate]],枚举顺序未指定。 Object.keys 也继承了此行为。
注意: ES2020 随后更改了此行为,甚至要求遗留操作遵循属性顺序。
其他操作和属性顺序:
虽然上述操作缺乏定义的枚举顺序,但其他操作确实遵守属性 命令。其中包括:
对于这些操作,顺序如下:
例外: 异常对象,例如代理,可以覆盖[[OwnPropertyKeys]] 内部方法并以不同的顺序返回键。
以上是ES6 是否保证所有对象枚举操作的属性顺序一致?的详细内容。更多信息请关注PHP中文网其他相关文章!