As an aside: - Static methods in Java always felt like a hack, because Java’s creators couldn’t bring themselves to support first-class functions. - Thus: I would much prefer to put Object.* methods into a module (once we have those). The same holds for “class methods” such as Math.*. There Math is used for namespacing and not really a class.
> From my view, JS-of-today is no less prototype-based than what Axel is > proposing, it just wires things up a bit differently. Or is there something > I'm missing? I agree. However: Prototypes are already *the* core mechanism with regard to JS inheritance, they are what stays after an instance has been created, they are actually used for instanceof tests, etc. PaCs put more emphasis on them, that’s all. I find they really shine when it comes to subclassing. You have to work harder with constructor functions (super-references will help a little, though). See code below. To me, the prototypes are at the core of what is happening in subclassing. == Prototypes as classes == // Superclass var Person = { constructor: function (name) { this.name = name; }, describe: function() { return "Person called "+this.name; } }; // Subclass var Worker = Person <| { constructor: function (name, title) { Person.constructor.call(this, name); this.title = title; }, describe: function () { return Person.describe.call(this)+" ("+this.title+")"; // (*) } }; == Constructor functions == // Superclass function Person(name) { this.name = name; } Person.prototype.describe = function() { return "Person called "+this.name; }; // Subclass function Worker(name, title) { Person.call(this, name); this.title = title; } Worker.prototype = Person.prototype <| { constructor: Worker, describe: function() { return Person.prototype.describe.call(this)+" ("+this.title+")"; } }; -- Dr. Axel Rauschmayer a...@rauschma.de twitter.com/rauschma home: rauschma.de blog: 2ality.com _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss