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: Erik Arvidsson <arv@chromium.org>
Date: Thu, 14 Feb 2013 17:41:28 -0500
Message-ID: <CAJ8+GojuedYPnMFuznioL2AiwbnpsckZj3fOE1w5YB0+T4F5uw@mail.gmail.com>
To: Scott Miles <sjmiles@google.com>
Cc: Daniel Buchner <daniel@mozilla.com>, Rick Waldron <waldron.rick@gmail.com>, Dimitri Glazkov <dglazkov@google.com>, public-webapps <public-webapps@w3.org>, Boris Zbarsky <bzbarsky@mit.edu>, Anne van Kesteren <annevk@annevk.nl>
On Thu, Feb 14, 2013 at 5:40 PM, Scott Miles <sjmiles@google.com> wrote:

> In all constructions the *actual* calling of HTMLButtonElement is done by
> the browser.
>
> All the user has to do is *not* call it, and only call super constructors
> if they are custom.
>
> For that reason, I don't see why this is an issue.
>

Or if you want you can polyfill HTMLButtonElement.call.

HTMLButtonElement.call = function() {};

On Thu, Feb 14, 2013 at 2:36 PM, Daniel Buchner <daniel@mozilla.com> wrote:
>
>> 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
>>>>>
>>>>>
>>>>
>>>
>>
>


-- 
erik
Received on Thursday, 14 February 2013 22:42:17 GMT

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