Propiedades enumerables de un objeto javascript

 

Por defecto, todas las propiedades que se añaden a un objeto son de tipo enumerable, por lo cual, se puede iterar por ellas utilizando el loop for-in.

 

var propiedad;
for ( propiedad in objeto ) {
  console.log( "Nombre: " + propiedad );
  console.log( "Valor: " + objeto[ propiedad ] );
}

Si necesitas una lista de propiedades enumerable de un objeto ECMAScript5 introdujo el método Object.keys() que devuelve un array de String con los nombres de las propiedades del objeto.

var propiedades = Object.keys(objeto);

Hay una diferencia entre las propiedades por las que itera el loop for-in y las que devuelve el método Object.keys(). El loop for-in incluye las propiedades prototype del objeto mientras que Object.keys() solo nos proporciona las own properties.

Ten en cuenta que no todas las propiedades son enumerables. De hecho, la mayoría de las propiedades prototype no lo son. Puedes comprobar si una propiedad es enumerable utilizando el método propertyIsEnumerable().

var persona = {
  nombre: "Aitor"
};
console.log( "nombre" in persona ); //true
console.log( persona.propertyIsEnumerable( "nombre" ) ); /true

var propiedades = Object.keys( persona ); //devuelve un Array

console.log( "length" in propiedades ); //operador in devuelve true
console.log( propiedades.propertyIsEnumerable( "length" ) ); //false

Aquí, la propiedad nombre del objeto persona es enumerable. En cambio, la propiedad length del array no es un enumerable ya que forma parte de Array.prototype que heredan todos los arrays, es decir, es una prototype property.

Propiedades enumerables de un objeto javascript

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s