prototype focus

Irakli Gozalishvili rfobic at gmail.com
Fri Jul 1 14:28:27 PDT 2011



On Friday, 2011-07-01 at 19:31 , Brendan Eich wrote:

> On Jul 1, 2011, at 6:19 AM, Irakli Gozalishvili wrote:
> 
> > With focus on prototype this is so much simpler: 
> > 
> > 
> > var Foo = Object.extend({
> >  initialize: function(options) { ... },
> > do_foo_job: function() { ... }
> > })
> > 
> > 
> > 
> > 
> > 
> > 
> 
> 
> With <| and 'super' in functions, I think you are set. It's hard to add more. The main debate is about whether this is enough, or do classes as sugar provide enough added value?
> 
> (But you didn't show Bar as well as Foo.)
> 

Sorry I don't understand what did I failed to show in Bar ?

My intent was to show that classes don't necessary need to have own constructors / initialization methods as they can be
simply inherited via prototype chain. Or did you meant something else ? 

> /be
> 
> 
> > 
> > 
> > On Friday, 2011-07-01 at 11:10 , Axel Rauschmayer wrote:
> > 
> > > > I don't think
> > > > JavaScript has ever been far from its prototype roots especially if
> > > > the programmer shifts to thinking about a prototype object instead of
> > > > thinking about a functions prototype property.
> > > 
> > > That is basically the point that the proposal tries to make. Have you taken a look at the library code? It is very short and not a radical overhaul.
> > > http://dl.2ality.com/dl/2011/06/Proto.js
> > > 
> > > Note how below, there is always an extra "prototype" in there with constructor functions.
> > > 
> > > Super-calls (there will be syntactic sugar for this):
> > > - Constructor functions: Superclass.prototype.foo.call(this)
> > > - PAC: Superclass.foo.call(this)
> > > 
> > > Subclassing:
> > > - Constructor functions: Subclass.prototype = Object.create(Superclass.prototype)
> > > - PAC: let Subclass = Object.create(Superclass)
> > > 
> > > Instanceof (internally):
> > > - Constructor functions: o instanceof C === C.prototype.isPrototypeOf(o)
> > > - PAC: o instanceof C === C.isPrototypeOf(o)
> > > 
> > > 
> > > > > Problems that both prototypes-as-classes (PAC) and class literals (CL) are
> > > > > trying to solve are:
> > > > > - Subclassing is hard and not directly supported by the language: connecting
> > > > > prototypes, chaining constructors, super-references.
> > > > 
> > > > Object.getPrototypeOf(this).foo.call(this) is pretty long.
> > > 
> > > See above.
> > > 
> > > > It seems to me that perhaps the PaC drifted too far or perhaps started
> > > > too far from what JavaScript has already. If the idea is to shift the
> > > > focus more towards prototypes, then starting from something like what
> > > > I've written and adding "super" syntax would be more consistent with
> > > > what JavaScript already has.
> > > 
> > > 
> > > “too far from what JavaScript has already” is very vague. How so? With class literals, your code will look like PAC, anyway. Have you taken a look at Sect. 3? Do you agree that the mentioned conceptual simplifications hold?
> > > http://www.2ality.com/2011/06/prototypes-as-classes.html#3
> > > 
> > > I find Brendan’s anti-PAC argument much more convincing: that all people might find it more natural to think in terms of constructors than in terms of prototypes. If that is the case then PAC would be a bad idea. The other convincing anti-PAC argument is that it is a bad idea to have two class mechanisms.
> > > 
> > > -- 
> > > Dr. Axel Rauschmayer
> > > 
> > > axel at rauschma.de (mailto:axel at rauschma.de)
> > > twitter.com/rauschma (http://twitter.com/rauschma)
> > > 
> > > home: rauschma.de (http://rauschma.de/)
> > > blog: 2ality.com (http://2ality.com/)
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > es-discuss mailing list
> > > es-discuss at mozilla.org (mailto:es-discuss at mozilla.org)
> > > https://mail.mozilla.org/listinfo/es-discuss
> > 
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org (mailto:es-discuss at mozilla.org)
> > https://mail.mozilla.org/listinfo/es-discuss
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20110701/2671b456/attachment.html>


More information about the es-discuss mailing list