Just for the record:
Prototype lookup in ClassDefinitionEvaluation changed in draft rev. 14., so an API function should rather look like:

Mixin = (base, ...mixins) => mixins.reduce(Object.mixin, class extends base {}.prototype).constructor

At least users now no longer need to access .prototype manually:

js> class Foo { where(){ return "Foo" } }
js> const BarMixin = { where(){ return "BarMixin" } }
js> (new class extends Mixin(Foo) {}).where()
"Foo"
js> (new class extends Mixin(Foo, BarMixin) {}).where()
"BarMixin"


- André

A tempest in a teapot. We can have better APIs that look nice for this
use-case. Develop some!

But let's not rush them into ES6, or invent custom syntax where API is
enough.

If someone does fast and good work, there's still time for ES6, or 7
(doesn't matter as much as the quality of the work; browsers are
prototyping parts of both).

/be

Dmitry Soshnikov wrote:
>/
/>/  On Jun 11, 2013, at 8:07 PM, Andrea Giammarchi wrote:
/>/
/>>/  if it's about being mature, then this is mature enough, if
/>>/  Object.mixin will be finalized:
/>>/
/>>/  ```javascript
/>>/  class Bar extends [M1, M2, M3].reduce(
/>>/    Object.mixin,
/>>/    Object.create(Foo.prototype)
/>>/  ) {
/>>/    // class definition ...
/>>/  }
/>>/  ```
/>>/
/>>/  I must admit that looks weird though ...
/>>/
/>/
/>/  Exactly - it might be really cool from the language abilities
/>/  perspective, but from the end-users, the example is not that useful:
/>/  if the language provides some abstraction (the "class" abstraction in
/>/  this particular case), the users which will join to JS starting form
/>/  ES6 will have complete right to not even know what that magic
/>/  "prototype" mean -- the one which you expose outside actually breaking
/>/  the class abstraction. The prototype chain is just the implementation
/>/  detail now (and all implementation detail should be hidden in the
/>/  best), not a feature.
/>/
/>/  P.S.: and I still need to choose my English words better :) for the
/>/  mature I probably more meant "syntactically solid" rather than a
/>/  library method.
/>/
/>/  But yeah, I promised not to do big off-topic in this for-of thread.
/>/
/>/  Dmitry/
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to