现在对对象属性进行了排序吗
Are object properties ordered now?
我注意到对象的ECMAScript定义已从第3版更改为第5版和第6版。
第3版
4.3.3 Object
An object is a member of the type Object. It is an unordered collection of
properties each of which contains a primitive value, object, or function. A
function stored in a property of an object is called a method.
第5版和第6版
4.3.3
object
member of the type Object.
NOTE An object is a collection of properties and has a single prototype
object. The prototype may be the null value.
由于它不再表示属性的无序集合,这是否意味着它们现在是有序的?以及JavaScript?
至少在第六版中(强调矿):
9.1.12[[OwnPropertyKeys]]()
当调用O的[[OwnPropertyKeys]]内部方法时,将采取以下步骤:
- 让键成为一个新的空列表
对于作为整数索引的O的每个属性键p,按数字索引升序
a。添加P作为键的最后一个元素。
对于O的每个自己的属性键p,它是字符串但不是整数索引,按属性创建顺序
a。添加P作为键的最后一个元素。
对于作为符号的O的每个自己的属性密钥p,按属性创建顺序
a。添加P作为键的最后一个元素。
归还钥匙。
规范依赖于属性的插入顺序,这意味着该顺序必须是对象的一部分。它还规定for in
循环必须使用此顺序(请参阅7.3.21和19.1.2.14)。但是,浏览器并不是在所有情况下都完全尊重这一点,所以你不应该依赖它
ES6-Map类型还指定了迭代的插入顺序。我相信这种情况受到所有浏览器的尊重,所以如果你需要依赖这种行为,你应该更喜欢它。
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- row.entity.xxxx属性doensn'排序后不匹配
- 按子属性(可能缺少)对对象的 javascript 数组进行排序
- 按多个属性对多维数组进行排序
- jQuery TinySort按数据属性排序和放置
- AngularJS使用对象属性排序多个对象数组
- 按属性对数组排序
- 如何使用第二个数组中对象的相关属性对对象数组进行排序
- 按属性对对象数组进行排序
- jQueryUI可拖动+可排序错误(无法读取未定义的属性'选项')
- Javascript:使用value属性对关联数组进行排序,而不转换为对象数组
- 为未排序列表设置onclick()属性
- 根据三个模型属性对主干集合进行排序
- 无法读取属性“”;匹配“;(嵌套排序)
- 排序属性由于某种原因不起作用
- 设置排序属性时无法清除数组控制器
- MongoDB多个排序属性:如何确定优先级
- 获取HTML而不重新排序属性
- 用不同的模型排序'属性烬
- 如果Dgrid的id以数字开头,则Dgrid列调整大小,隐藏,重新排序属性会产生错误