- From: Joseph Orbegoso Pea <notifications@github.com>
- Date: Sun, 10 Apr 2016 19:45:25 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/423/208131046@github.com>
I didn't read the whole thread, but currently, Custom Elements are compatible with ES5 constructor-pattern classes like this: ```js function MyElement() { // The only caveat: just don't do anything in this constructor. } MyElement.prototype = Object.create(HTMLElement.prototype) MyElement.prototype.createdCallback = function createdCallback() { // Instead, do your "constructor" logic here. } MyElement = document.registerElement('my-element', ) // ^ This assignment is required if you'd like to use `new MyElement` directly // instead of document.createElement('my-element') export default MyElement ``` This also works with ES6 classes: ```js class MyElement extends HTMLElement { createdCallback() { // Do your "constructor" logic here. } } MyElement = document.registerElement('my-element', ) // ^ This assignment is required if you'd like to use `new MyElement` directly // instead of document.createElement('my-element') export default MyElement ``` then in another file ```js import MyElement from './my-element' let el = document.createElement('my-element') // or let el = new MyElement ``` It'd be cool if it just worked properly with (at least) ES6 classes: ```js class MyElement extends HTMLElement { constructor() { // Do your actual constructor logic here. } } document.registerElement('my-element', MyElement) // ^ With no assignment needed. export default MyElement ``` then just ```js import MyElement from './my-element' let el = new MyElement // document.createElement() not needed, but can exist for backwards compatibility. ``` --- 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/423#issuecomment-208131046
Received on Monday, 11 April 2016 02:45:52 UTC