Re: [w3c/webcomponents] customElements.define should throw on registration of definitions that shadow built-in properties / methods. (#583)

So, the custom elements spec allows authors to extend HTMLElement and I can put a `setAttribute` function on my custom element's prototype. However, when HTML containing my custom element and a few attributes gets parsed, my definition of `setAttribute` isn't called. So, there must be another unexposed thing for setting attributes that the browser uses when parsing because it's not just making a call like `element.setAttribute(x, y)`. The intent of this issue was to prevent people from expecting a particular behavior so that it might be possible in the future to do things like define parsing in terms of the public API of the elements being created. However, I get the feeling that this ship might have already sailed if people already regularly do things like put their own `setAttribute` on native elements.

This:
```html
<my-element a="b" c="d"></my-element>
```
doesn't have the same result as this:
```javascript
let e = document.createElement('my-element');
e.setAttribute('a', 'b');
e.setAttribute('c', 'd');
```
if `my-element` is defined as:
```javascript
customElements.define('my-element', class extends HTMLElement {
  setAttribute() {
    // Do nothing.
  }
});
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/583#issuecomment-252554377

Received on Monday, 10 October 2016 07:53:41 UTC