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



Reply via email to