fix: defend against for/in use on arrays #5661
Merged
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.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request
📖 Description
Some folks incorrectly use
for/in
onArray
instances. This is a bad practice but people still do it and there is lots of legacy code in existence that makes this mistake which may never be updated.This PR makes our Array observation bookkeeping properties non-numerable so that
for/in
does not return them in the event that a developer makes the above mistake or is using a 3rd party library which makes this mistake.🎫 Issues
👩💻 Reviewer Notes
This is a very small change that shifts the code from simple field assignments to
defineProperty
calls, so we can provide descriptor data and make the properties non-enumerable.📑 Test Plan
All existing tests continue to pass.
✅ Checklist
General
$ yarn change
⏭ Next Steps
A second matching PR will be incoming soon for FASTElement 2.0.