prototype focus

Irakli Gozalishvili rfobic at gmail.com
Fri Jul 1 06:19:04 PDT 2011


I absolutely agree with Alex and have few other points:

1. Does this code looks familiar ?

> function Foo(options) { .... }
> Foo.prototype.do_foo_job = function() { ... }
> 
> function Bar(options) {
> if (!(this instanceof Bar))
>  return this new Bar(options);
> Foo.apply(this, arguments);
> }
> Bar.prototype.do_bar_job = function() {
>  ....
> }
> 

With focus on prototype this is so much simpler: 


var Foo = Object.extend({
 initialize: function(options) { ... },
do_foo_job: function() { ... }
})


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

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


More information about the es-discuss mailing list