Re: [webcomponents] Inheritance in Custom Elements (Was Proposal for Cross Origin Use Case and Declarative Syntax)

On Thu, Dec 5, 2013 at 8:50 PM, Ryosuke Niwa <rniwa@apple.com> wrote:

> Thanks.
>
> On Dec 5, 2013, at 8:30 PM, Dimitri Glazkov <dglazkov@chromium.org> wrote:
>
> On Thu, Dec 5, 2013 at 7:55 PM, Ryosuke Niwa <rniwa@apple.com> wrote:
>
>> On Nov 11, 2013, at 4:12 PM, Dimitri Glazkov <dglazkov@chromium.org>
>> wrote:
>> > 3) The approach pollutes global name space with constructors. This had
>> been voiced many times as unacceptable by developers.
>> >
>> > 4) How does build a custom element that uses <name-card> as its base
>> element? What about <div> or any other HTML element?
>> >
>> > The last one remains to be the hardest. The tortured inheritance
>> support is what killed <element> in the first place. We can't ignore the
>> inheritance, since it is clearly present, in both DOM and JS. If we attempt
>> to punt on supporting it, our decisions cut off the opportunities to evolve
>> this right in the future, and will likely leave us with boogers like
>> multiple syntaxes for inheritance vs. non-inheritance use cases.
>>
>> What exactly are you referring to by inheritance support?
>
>
>> Inheritance from all builtin elements (e.g. subclasses of HTMLElement)?
>>
>> Or inheritance from custom elements authors have defined?
>>
>
> Sure, both are fine. Why should we treat them differently?
>
>
> For the following reasons to list a few:
>
>    1. We don't have any subclass of HTMLElement that can be instantiated
>    and has subclasses.
>
> Not sure why this matters?

>
>    1. Author scripts can't access internal states of builtin elements;
>    e.g. dirtiness of values in HTMLInputElement.
>
> Again, not sure why this matters either.


>    1. Methods and properties of builtin elements are not designed to be
>    overridden by subclasses.
>
> Okay, that seems like an implementation detail of HTML. Again, doesn't
preclude seeking consistency between inheritance from custom elements or
HTML elements.


>
>    1. Behaviors of builtin elements will be changed by UAs in the future
>    without author-defined subclasses being "upgraded" accordingly, thereby
>    violating Liskov substitution principle.
>
> Sure, it's probably a bad idea to inherit from any HTML element (other
than HTMElement).

The Custom Elements spec is deeply steeped in the idea that we bring new
functionality by explaining how the platform works (see
http://extensiblewebmanifesto.org/). If we just side-load some new platform
magic to accommodate a few specific use cases, we're not doing the right
thing.

:DG<

Received on Friday, 6 December 2013 05:30:37 UTC