>Writing your private field to an object that's not an instance of your class. >and then invoking the above write method with a this value that's not an instance of A, such as a proxy.
Given: class A { private id = 0; private method(value) { return value; } write(value) { private(this)["id"] = private["method"](value); } } I imagine this means trying to do something along the lines of: (new A()).write.call({}, 'pawned'); This would fail. The private syntax call site would be scoped to the provider class. For example imagine the current possible transpilation of this: ;(function (){ var registry = WeakMap(); function A () { registry.set(this, {id: 0}) } A.prototype.write: function () { registry.get(this)["id"] = registry.get(this.constructor)["method"].call(this, value); } // shared(i.e private methods) registry.set(A, { method: function (value) { return value; } }); return A })(); Trying to do the the afore-mentioned forge here would currently fail along the lines of cannot read property "id" of "undefined". On Sat, Apr 14, 2018 at 1:49 AM, Michael Theriot < michael.lee.ther...@gmail.com> wrote: > I'd imagine that would fail the same way proxies fail on typed arrays. > > > On Apr 13, 2018, at 6:26 PM, Waldemar Horwat <walde...@google.com> > wrote: > > > >> On 04/13/2018 01:38 AM, Sultan wrote: > >> The proposal is an explainer with regards to an alternative sigil-less > syntax to back private fields/methods. > >>> What does private(this)[property] do? > >> "private(this)[property]" and alternatively "private[property]" or > "private.property" all invoke access of a private "property" on the "this" > instance of the class, symmetrical to thesyntax/function nature of both the > "super" and"import" keywords. > >>> How do private fields come into existence? > >> Unless i've misunderstood what is meant by "come into existence" the > proposals makes use of the reserved "private" keyword to define private > fields i.e "private id = 1". > > > > I was asking about what creates those fields. > > > >>> What's private about private fields? > >> Outside of a private fields provider class, private fields/methods > would not be accessible. > >>> How do you prevent them from being forged or stuck onto unrelated > objects? > >> What do you mean by this? > > > > Writing your private field to an object that's not an instance of your > class. > > > > class A { > > private id = ...; > > private foo = ...; > > write(value) { > > private(this)["id"] = value; > > private(this)["foo"] = ... my private secret that anyone outside the > class must not learn ...; > > } > > } > > > > and then invoking the above write method with a this value that's not an > instance of A, such as a proxy. > > > > Waldemar > > _______________________________________________ > > es-discuss mailing list > > es-discuss@mozilla.org > > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss