
¿Qué son las propiedades enumerables en JavaScript?

En JavaScript, los objetos tienen propiedades que pueden ser enumeradas o no enumerables. Las propiedades enumerables son aquellas que se pueden iterar a través de un bucle for-in. Mientras que, las propiedades no enumerables no se pueden iterar a través de un bucle for-in. En este artículo, explicaremos qué son las propiedades enumerables, cómo diferenciarlas de las no enumerables y cómo utilizarlas en tu código.
Propiedades enumerable
Cuando creamos un objeto en JavaScript, todas sus propiedades por defecto son enumerables. Esto significa que podemos iterar sobre ellas utilizando un bucle for-in. Veamos un ejemplo:
const miObjeto = {
propiedad1: 'valor1',
propiedad2: 'valor2',
propiedad3: 'valor3'
};
for (let propiedad in miObjeto) {
console.log(propiedad);
}
En este ejemplo, todas las propiedades son enumerables, por lo que podemos iterar sobre ellas utilizando un bucle for-in.
Cómo hacer que una propiedad no sea enumerable
En ocasiones, queremos que una propiedad de un objeto no sea iterable en un bucle for-in. Podemos conseguir esto utilizando el método Object.defineProperty() y estableciendo la propiedad enumerable en false. Veamos un ejemplo:
const miObjeto = {
propiedad1: 'valor1',
propiedad2: 'valor2',
propiedad3: 'valor3'
};
Object.defineProperty(miObjeto, 'propiedadNoEnumerable', {
value: 'valor no enumerable',
enumerable: false
});
for (let propiedad in miObjeto) {
console.log(propiedad);
}
En este ejemplo, establecemos la propiedad propiedadNoEnumerable como no enumerable utilizando Object.defineProperty(). Luego, iteramos por el objeto utilizando un bucle for-in, pero la propiedad no se incluye en la iteración porque no es enumerable.
Propiedades no enumerable
Como ya hemos mencionado, las propiedades no enumerables de un objeto no se pueden iterar a través de un bucle for-in. Veamos un ejemplo de cómo podemos utilizar esto en nuestro código:
const miObjeto = {
propiedad1: 'valor1',
propiedad2: 'valor2',
propiedad3: 'valor3'
};
Object.defineProperty(miObjeto, 'propiedadNoEnumerable', {
value: 'valor no enumerable',
enumerable: false
});
for (let propiedad in miObjeto) {
console.log(propiedad);
}
console.log(Object.keys(miObjeto)); // ['propiedad1', 'propiedad2', 'propiedad3']
En este ejemplo, establecemos la propiedad propiedadNoEnumerable como no enumerable utilizando Object.defineProperty(). Luego, iteramos por el objeto utilizando un bucle for-in y podemos ver que la propiedad no se incluye. Finalmente, imprimimos todas las claves del objeto utilizando Object.keys() y podemos ver que propiedadNoEnumerable no está incluida.
Conclusión
En este artículo, hemos explicado qué son las propiedades enumerables en JavaScript y cómo diferenciarlas de las no enumerables. También hemos explicado cómo hacer que una propiedad no sea enumerable utilizando Object.defineProperty(). Esperamos que esta información te ayude a escribir mejores programas en JavaScript.
Preguntas frecuentes
¿Cómo puedo saber si una propiedad es enumerable?
Podemos utilizar el método Object.getOwnPropertyDescriptor() para conocer las características de una propiedad, incluyendo si es enumerable o no. El método devuelve un objeto con las propiedades de la propiedad.
¿Para qué se utilizan las propiedades no enumerables?
Las propiedades no enumerables se utilizan para ocultar propiedades de un objeto y prevenir que se iteren usando un bucle for-in. También se utilizan para prevenir la modificación de propiedades importantes de un objeto.
¿Qué sucede si trato de iterar sobre una propiedad no enumerable?
Una propiedad no enumerable no será incluida en la iteración de un bucle for-in. En vez de eso, se saltará y no se ejecutará ningún código relacionado con esa propiedad en el bucle.
¿Cómo puedo hacer que una propiedad no enumerable vuelva a ser enumerable?
Podemos utilizar el método Object.defineProperty() estableciendo enumerable a true para hacer que una propiedad no enumerable vuelva a ser enumerable.
Deja una respuesta