Perfect your code
With built-in code review tools, GitHub makes it easy to raise the quality bar before you ship. Join the 40 million developers who've merged over 200 million pull requests.
Sign up for free See pricing for teams and enterprisesNormative: make EnumerableOwnPropertyNames ordered #1793
Merged
+0
−1
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
bakkot commentedNov 23, 2019
Related to proposal-for-in-order. Added as a separate PR because this change wasn't technically in scope during the process for that proposal. Thanks to @domenic for bringing this to my attention.
EnumerableOwnPropertyNames
is used byObject.keys
,Object.values
,Object.entries
,JSON.parse
, andJSON.stringify
.Removing this line has the effect of requiring those to be ordered the same way as
Reflect.ownKeys
, which is fully specified, rather thanfor-in
, which is only partially specified.I have not been able to find cases where implementations order any of the APIs which use
EnumerableOwnPropertyNames
differently than they wouldReflect.ownKeys
, even in the presence of exotic objects and accessors which modify the object being iterated. So removing this line should not have any effects on the implementations I have on hand.I want to make this change for two reasons: