bind, call y apply en javascript
Entender los métodos bind(), call() y apply() en javascript bind() El objeto car guarda los datos de un coche y dispone de un método que devuelve, …
Vamos a ver un ejemplo de conversión de una colección de nodos html (HTMLCollection) a un Array. Pero para que no sea tan sencillo, vamos a imaginar el siguiente fragmento html:
<fieldset id="Puesto de trabajo">
<p>Un párrafo</p>
<br />
<p>Un párrafo</p>
<br />
<p>Un párrafo</p>
<br />
<p>Un párrafo</p>
<br />
<p>Un párrafo</p>
<br />
<br />
</fieldset>
El objetivo es seleccionar el elemento fieldset y, una vez seleccionado (fíjate que el id contiene espacios), lo que se pretende es ocultar todas las etiquetas <br>
que contiene.
const fieldset = document.querySelector('[id="Puesto de trabajo"]');
Una vez que tenemos una referencia a la etiqueta “padre” se procede a seleccionar todos sus elementos “hijos”.
const hijos = fieldset.children;
// hijos contine un HTMLCollection(11)[p,br,p,br,p,br,p,br,p,br,br]
El objetivo final es ocultar las etiquetas <br>
. Para ello vamos a usar el método filter
del objeto Array()
. Pero antes, hemos de convertir el objeto HTMLCollection en Array, de lo contrario no podemos aplicar este método.
// let array = [].slice.call(HTMLCollection);
let arrayBrs = [].slice.call(hijos);
Una vez que ya tenemos el array con todas las etiquetas, las filtramos y nos quedamos solamente con las que nos interesan:
const brs = arrayBrs.filter((e) => (e.nodeName = "BR"));
// brs contiene las etiquetas <br> contenidas en <fieldset>
// las ocultamos:
brs.forEach((e) => (e.style.display = "none"));
Lo podríamos hacer todo mucho más compacto:
[].slice
.call(fieldset.children)
.filter((e) => e.nodeName === "BR")
.forEach((e) => (e.style.display = "none"));
Entender los métodos bind(), call() y apply() en javascript bind() El objeto car guarda los datos de un coche y dispone de un método que devuelve, …
Array En javaScript un array es un objeto que puede contener diversos elementos. Estos elementos no tienen por qué ser todos del mismo tipo: let …