Private Names and Methods

Russell Leggett russell.leggett at gmail.com
Fri Apr 6 10:57:20 PDT 2012


On Fri, Apr 6, 2012 at 1:42 PM, Brendan Eich <brendan at mozilla.org> wrote:

> Axel Rauschmayer wrote:
>
>> Multiple inheritance is where things become interesting. In order to
>> implement some kind of mixin or trait mechanism for JavaScript, you would
>> need the ability to copy private members.
>>
>
> Which .{ can do. The argument is that this is safe against unintended name
> leaks because while the LHS (mixin-derived) is an expression, the RHS
> (mixin-base) is a literal.
>
> Is having only the literal-RHS-only special form too restrictive? It could
> be wrapped in an API usable from downrev script, but this means
> implementors of mixins must use ES6 even though consumers can use pre-ES6.


I feel like I'm probably not the first to suggest this, but what about a
spread operator for objects?

    foo.{ ...myMixin }

It would not only work for something like this, but also in regular object
literals to mixin.

    let foo = { a:1, b:2, ...myMixin}

And would result in copying all of the properties from myMixin into the
object literal.

- Russ


>
>
> /be
>
> ______________________________**_________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/**listinfo/es-discuss<https://mail.mozilla.org/listinfo/es-discuss>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120406/8c105d90/attachment.html>


More information about the es-discuss mailing list