W3C home > Mailing lists > Public > public-webapps@w3.org > January to March 2013

Re: Custom elements ES6/ES5 syntax compromise, was: document.register and ES6

From: Daniel Buchner <daniel@mozilla.com>
Date: Thu, 14 Feb 2013 14:36:12 -0800
Message-ID: <CAHZ6zJFsXKJO0AgYQGjBj9mfes9kC5Qg67nb+sZ3zXeeVK-DCQ@mail.gmail.com>
To: Scott Miles <sjmiles@google.com>
Cc: Rick Waldron <waldron.rick@gmail.com>, Erik Arvidsson <arv@chromium.org>, Dimitri Glazkov <dglazkov@google.com>, public-webapps <public-webapps@w3.org>, Boris Zbarsky <bzbarsky@mit.edu>, Anne van Kesteren <annevk@annevk.nl>
It seems to me (please correct me if this is inaccurate) that you can't *
really* polyfill ES6 extension of existing element constructor inheritance,
because afaik, you cannot call the existing native constructors of elements
- it throws. So if you can only do a jankified 1/2 fill, why not just
provide an optional route that has no legacy issues for people who want to
use it?

I believe even Scott's polyfill doesn't do anything to enable
HTMLButtonElement.call(this);

Hopefully I'm in the ballpark here, but if what I said is wrong or not an
issue, what *is* the reasoning behind it?

Daniel J. Buchner
Product Manager, Developer Ecosystem
Mozilla Corporation


On Thu, Feb 14, 2013 at 2:23 PM, Scott Miles <sjmiles@google.com> wrote:

> MyButton = document.register(‘x-button’, {
>   prototype: MyButton.prototype,
>   lifecycle: {
>      created: MyButton
>   }
> });
>
> What's the benefit of allowing this syntax? I don't immediately see why
> you couldn't just do it the other way.
>
>
> On Thu, Feb 14, 2013 at 2:21 PM, Rick Waldron <waldron.rick@gmail.com>wrote:
>
>>
>>
>>
>> On Thu, Feb 14, 2013 at 5:15 PM, Erik Arvidsson <arv@chromium.org> wrote:
>>
>>> Yeah, this post does not really talk about syntax. It comes after a
>>> discussion how we could use ES6 class syntax.
>>>
>>> The ES6 classes have the same semantics as provided in this thread using
>>> ES5.
>>>
>>> On Thu, Feb 14, 2013 at 5:10 PM, Rick Waldron <waldron.rick@gmail.com>wrote:
>>>
>>>>
>>>> On Thu, Feb 14, 2013 at 4:48 PM, Dimitri Glazkov <dglazkov@google.com>wrote:
>>>>
>>>>>
>>>>> MyButton = document.register(‘x-button’, {
>>>>>   prototype: MyButton.prototype,
>>>>>   lifecycle: {
>>>>>      created: MyButton
>>>>>   }
>>>>> });
>>>>>
>>>>
>>>>
>>>> Does this actually mean that the second argument has a property called
>>>> "prototype" that itself has a special meaning?
>>>>
>>>
>>> This is just a dictionary.
>>>
>>>
>>>>
>>>> Is the re-assignment MyButton intentional? I see the original
>>>> "MyButton" reference as the value of the created property, but then
>>>> document.register's return value is assigned to the same identifier? Maybe
>>>> this was a typo?
>>>>
>>>>>
>>>>> document.register(‘x-button’, {
>>>>>  constructor: MyButton,
>>>>>  ...
>>>>> });
>>>>>
>>>>>
>>>> Same question as above, but re: "constructor"?
>>>>
>>>>
>>> Same answer here.
>>>
>>> I'm not happy with these names but I can't think of anything better.
>>>
>>
>> Fair enough, I trust your judgement here. Thanks for the follow up—always
>> appreciated.
>>
>> Rick
>>
>>>
>>> --
>>> erik
>>>
>>>
>>
>
Received on Thursday, 14 February 2013 22:37:11 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:57 GMT