¿Es posible crear un elemento si tiene su constructor pero no sabe su nombre de etiqueta?
Ejemplo:
class CustomElement extends HTMLElement {} customElements.define(genRandomString(), CustomElement); ¿Es posible crear una nueva instancia de CustomElement ? ¿O puede obtener su nombre de etiqueta de alguna manera?
Pregunto esto porque no estoy seguro de cuál es la forma correcta de pasar elementos personalizados a las funciones que los necesitan: ¿debo pasar tanto el nombre como el constructor, en caso de que necesite crear un elemento (que requiere el nombre) o para verificar si un elemento existente es de este tipo (que requiere el constructor)?
¿Es esto lo que estás pidiendo?
let foo = "bar"; window[ genRandomString() ] = foo; ¿Y luego quiere saber qué produjo getRandomString ?
Solo cuando supervisa window puede capturar lo que se le agrega.
Lo mismo con WebComponents, solo cuando se customElements.define puede registrar qué nombres se usan.
En otras palabras: meterse con su prototype y potencialmente romper su ejecución predeterminada.
Pero esto solo funciona desde el momento en que tienes el control; podría haberse perdido todos los componentes web ya creados en ese momento.
¿Puedes explicar POR QUÉ quieres hacer esto?
¿Es posible crear un elemento si tiene su constructor pero no sabe su nombre de etiqueta?
Si tiene acceso al constructor (como dijo que tiene), puede usar
const instance = new CustomElement(); Tenga en cuenta que esto podría fallar si el constructor no se ajusta a las restricciones del constructor del elemento personalizado .