Support private fields in class instances #10
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.
When creating a proxy for an instance of a class, ensure that if a method forwarded to the instance can access private fields within that class. For instance:
As it stands, this produces the TypeError:
If we call
this.#baz()before we set#qux, then we get:We get this error because
proxy.barreturns a function that is bound to the proxy object and not our Foo object. Therefore, if we are know we are trying to access a method on Foo we need to get the proxy to return a wrapper function which ensures that when the method is called, it is done so with our Foo instance asthisand not the proxy object. This is explained here in the MDN docs:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#no_private_property_forwarding
Fixes #2.