Thanks to @joews comment, I can answer my question.
From reference 11.1.5 Object initializer :
Syntax
ObjectLiteral:
Property NameAndValueList:
In short, the object constructor takes as arguments nothing, a list of initialization values or a list of initialization values, followed by a comma.
This list of initialization values consists of a PropertyAssignment or a list of initialization values followed by a PropertyAssignment , which basically means a list of PropertyAssignment by recursion.
Now the question is in the last PropertyNameAndValueList , PropertyAssignment , is there a specific order in which both components are evaluated?
Production PropertyNameAndValueList: PropertyNameAndValueList, PropertyAssignment is evaluated as follows:
Order will be guaranteed if 2. necessarily follows 1. ..
From 5.2 Algorithm Agreements :
A specification often uses a numbered list to indicate steps in an algorithm. These algorithms are used to accurately determine the required semantics of ECMAScript language constructs. Algorithms do not involve the use of any particular implementation technique. In practice, there may be more efficient algorithms for implementing this function.
...
For clarity of expression, the steps of the algorithm can be divided into consecutive substeps.
So, the expected initialization order is element by element from which I can assemble.
source share