Tengo una clase de JavaScript que quiero leer y establecer una propiedad llamada selection de otro archivo, y estaba tratando de acceder a la clase/métodos desde el objeto de la window del navegador, pero la clase no aparece allí.
Veo otras clases como JQuery. ¿Cómo puedo hacer que mi clase aparezca en la ventana de acceso global?
Esto es lo que esperaba hacer:
class UI { constructor() { this.selection = {}; // I want to read and set this property } }Y de otro archivo, esperaba hacer algo como esto:
if( window.UI.selection.name ) { window.UI.selection.name = 'A new name'; }; ¿Hay alguna manera de hacer que una clase sea accesible globalmente en la window ?
Dado que las clases son parte del JS moderno, al igual que las variables let y const , no se adjuntan al objeto de window si se crean en el ámbito global.
Puede acceder a la clase de interfaz de usuario con su nombre, incluso en un archivo diferente, siempre que no oculte la variable de interfaz de usuario.
<script> class UI { constructor() { this.selection = {}; // I want to read and set this property } } </script> <script> console.log(UI); </script>La excepción a esto es si está utilizando módulos, en cuyo caso cada módulo tendrá su propio alcance.
En ese caso, podría asignar explícitamente el objeto de la window ( window.UI = UI ) pero no debería hacerlo. Utilice import y export en su lugar.
La selection es un objeto que se crea en instancias de la clase UI mediante la función constructora.
Solo aparece en instancias de la clase y no aparece en la clase misma.
Para acceder a eso, primero debe crear una instancia:
const ui = new UI(); ui.selection.name = "foo";Si desea definir una clase y usar su propia variable de instancia, puede hacerlo
class UI { constructor() { this.selection = {}; // I want to read and set this property } } window.UI = new UI() window.UI.selection.name = "foo" console.log(window.UI.selection.name) Si desea utilizar la clase sin new pero con variable estática, puede escribir lo siguiente:
class UI { static selection = {} } window.UI = UI window.UI.selection.name = "foo" console.log(window.UI.selection.name) Referencia:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes