If I correctly understood, A is for the supposedly existing case where someone 
would add a property to an object before you “extend.{}” it to alter the way 
that property is handled, in order to get acces to things you wouldn’t have 
thought they could gain access to but that you’re putting on a public field of 
an object you’re not sure to trust.

This is a very contreived use case, considering that if you can’t trust the 
object you’re working with, it can very possibly be a proxy, in which case even 
[[DefineOwnProperty]] can lead to unintended leaks.

From: T.J. Crowder 
Sent: Wednesday, May 30, 2012 11:17 AM
To: Brendan Eich ; es-discuss@mozilla.org 
Subject: Re: New Object Extension Literal Strawman
On 30 May 2012 05:09, Brendan Eich <bren...@mozilla.org> wrote:

  Brendan Eich wrote:

    The only usable+secure extensions I see are two, so we don't confuse users 
with almost-identical syntax with quite different (when it matters most, when 
under attack) semantics:

    A. obj.{prop: val, ...} as safe mustache, with : for define not assign.

    B. obj.[prop = val; ...] with meta... of course, for fluent-style chained 
assignments of obj's props.

    I use [ not { for the chained case so the bracketing as well as 
;-separation (final ; is optional) and = not : distinguish B from A for readers 
looking at any punctuation.



  Stop me if you've heard this one before...

  For B, instead of [] we could use () as the chained set/call brackets. E4X 
(ECMA-357) defines xml.(expr) as a filtering predicate expression, but no 
worries, E4X is going away.


So A remains

obj.{x: val, y: val};

...where these are [[DefineOwnProperty]]

and B becomes

obj.(x = val; y = val);

...where these are [[Put]]

Is the idea to _only_ have B, or to have both A and B? I see clear use cases 
for B. I'm not immediately seeing them for A but I came late-ish to the 
discussion.

-- T.J.


--------------------------------------------------------------------------------
_______________________________________________
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

Reply via email to