W3C home > Mailing lists > Public > public-script-coord@w3.org > April to June 2013

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

From: Allen Wirfs-Brock <allen@wirfs-brock.com>
Date: Thu, 11 Apr 2013 09:50:42 -0700
Cc: public-webapps@w3.org, "public-script-coord@w3.org" <public-script-coord@w3.org>
Message-Id: <62ADC07E-3863-4A55-882E-982CFBFB60B3@wirfs-brock.com>
To: Boris Zbarsky <bzbarsky@MIT.EDU>

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:13 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:37:48 UTC