Tengo una función que crea un objeto y me gustaría eliminarlo. Vi esta publicación: Eliminar objetos en JavaScript pero no pude crear la condición para eliminarlo.
class setBackgroundColor { constructor (element, options) { this.element = element; this.options = options; this.element.style.backgroundColor = this.options; } } function onWindowResize () { let mobile = window.innerWidth < 800 if (mobile) { new setBackgroundColor(document.querySelector('.my_container'), "red") // var newObjet = new setBackgroundColor(document.querySelector('.my_container'), "red") } else { return // delete newObjet } } onWindowResize (); window.addEventListener('resize', onWindowResize); .my_container{ margin: 30px; width: 100px; height: 100px; border: 1px solid black; } <div class="my_container"></div>La única forma de eliminar un objeto es eliminar todas sus referencias.
El objeto creado por su llamada a setBackgroundColor se elimina casi de inmediato porque nunca mantiene una referencia a él.
Si tuviera que quitar el comentario de la línea que comienza \\ var newObjet , se eliminaría casi de inmediato porque la función finalizaría y la variable quedaría fuera del alcance.
Creo que lo que quieres hacer es eliminar la configuración de color de fondo que hiciste.
Eso no es parte del objeto. La función que lo hizo simplemente se adjuntó al objeto, pero el cambio fue al element que pasó, no al objeto en sí.
Si desea cambiar el color de fondo a otra cosa, debe hacerlo explícitamente.
else { document.querySelector('.my_container').style.backgroundColor = "";Dicho esto, si desea cambiar el estilo de algo en función del tamaño de la ventana, use la función de consulta de medios integrada en CSS .
Es mucho menos complicado que buscar en el DOM y modificar el estilo con JS.
El comando de delete no tiene efecto en las variables regulares, solo en las propiedades.
let x = {a:"a"}; delete x; //won't work delete xa; // worksLa única forma de eliminarlo es quitándole la referencia.