Итак, я знаю, как создать пользовательский элемент, и я уже сделал 2, которые меня устраивают. Мои два элемента выглядят примерно так:
let menuPicker = Object.create(HTMLElement.prototype);
menuPicker.initialized = false;
menuPicker._init = function(){
...
}
...
menuPicker.attachedCallback = menuPicker._init;
menuPicker.createdCallback = menuPicker._init;
...
document.registerElement('menu-picker', {
prototype: menuPicker
});
Что работает и все, но на этот раз я хочу JS класс . В частности, эта функция:
class test {
get item(){...}
set item(){...}
}
Поэтому я решил, что могу просто сделать следующее, чтобы легко реализовать это.
class listBox extends HTMLElement.prototype {
initialized = false;
constructor(props){
super(props);
this.attachedCallback = this._init;
this.createdCallback = this._init;
}
_init () {
if(this.initialized) return;
this.initialized = true;
this.style.display = "block";
this.appendChild(document.createElement('div'));
}
}
document.registerElement('list-box', {
prototype: listBox
});
Однако я получаю ошибку Class extends value #<HTMLElement> is not a constructor or null
. Так что теперь я застрял и не могу найти метод использования класса для создания пользовательского элемента HTML.
Для упрощения:
Как создать пользовательский элемент элемент, использующий класс JS для создания свойств элемента?