On Apr 11, 2013, at 9:32 AM, Boris Zbarsky wrote: > On 4/11/13 12:23 PM, Allen Wirfs-Brock wrote: >> So why don't you make "register" a static method on HTMLElement and then >> define the <element> semantics so it automatically does: >> MyElement.register() >> >> This would normally invoke the inherited static method > > I lost track of something here. Why would it do that? Does MyElement have > Element on its proto chain? MyElement.prototype certainly has > Element.prototype on _its_ proto chain, but that's a separate concern from > what happens with the interface objects... Is this something that ES6 > classes define differently from current WebIDL and implementations, and if > so, do we need to align the two somehow?
Yes ES6 has "class-side" inheritance. The ES5 equivalent for: class Sub extends Super { constructor() {/*constructor body */ } method1 () {} static method2 {} } is: function Sub() {/*constructor body */ } Sub.__proto__ = Super; Sub.prototype = Object.create(Super.prototype); Sub.prototype.method1 = function method1() {}; Sub.method2 = function method2 () {}; Sub.foo looks first looks for a own property on Sub, then on Super, etc. Allen