Re: [webcomponents]: Platonic form of custom elements declarative syntax

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

Received on Thursday, 11 April 2013 16:51:14 UTC