On Wed, Oct 5, 2011 at 12:52 AM, Tom Van Cutsem <tomvc...@gmail.com> wrote:

> Thanks for the feedback, John.
>
> I have to admit that at first I was also taken aback by the apparent
> complexity of the "syntax for efficient traits" strawman. Traits have many
> knobs, and require a lot of syntax to turn these knobs.
>
> Regardless of whether you'd want nice declarative syntax for traits for the
> sake of usability, for traits.js in particular, there's another important
> benefit to having some language support. When using Trait.create to create
> "tamper-proof" objects whose methods have an unspoofable |this|-binding, the
> traits.js library creates a method wrapper per method per instance (to bind
> |this| to the instance). I still need to verify how much overhead this
> actually creates, but there definitely is overhead, and I don't see any way
> to avoid it without some support from the language.
>

Yes I sensed your anguish about this issue. However I believe experimental
measurements might surprise you. Lots of JS code involves event handlers
passed into DOM calls. I bet lots of JS code already duplicates methods and
bind |this|.  Only when you have many instances will this overhead matter,
and in those cases I think you might be better off without OOP anyway.

jjb


> Cheers,
> Tom
>
> 2011/10/5 John J Barton <johnjbar...@johnjbarton.com>
>
>> In trying to update my JS approach I looked into 'traits'. I'm still on
>> the fence about using them at this stage, but MarkM was asking for feedback
>> of pretty much any kind so here is a little.
>>
>> I believe I understand traits for the most part just from the info on the
>> Web site:
>> http://traitsjs.org/
>> (but read the examples in the Paper, not the one in the Tutorial).
>> Traits feel like JS to me: a reusable set of methods packaged in an
>> object. The Trait construct add regularity and organization to a wide-spread
>> pattern of JS use, but it feels like a tool you pick up when you need it.
>> The key operations are create and compose, with resolve and override to
>> handle exotic issues.
>>
>> On the other hand I had the opposite reaction to
>>
>> http://wiki.ecmascript.org/doku.php?id=strawman:syntax_for_efficient_traits
>> That proposal is a completely different language with many new keywords
>> and operators.
>>
>> I came away deciding to stop using |prototype| + new in favor of
>> Object.create() and to revisit the traits.org library after a bit.
>>
>> jjb
>>
>>
>> _______________________________________________
>> 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