for...in

This translation is incomplete. Please help translate this article from English.

Resumen

La sentencia for..in itera  sobre todas las propiedades de un objeto, en un orden arbitriario. Para cada una de las propiedades, se ejecuta la sentencia especificada.

Sintaxis

for (variable in objeto)sentencia
variable
Variable que itera sobre cada propiedad, el nombre de una propiedad diferente del objeto iterado es asignada a esta variable en cada iteración. Opcionalmente se declara con la palabra clave var. Esta variable es local a la función, no al bucle. (En otras palabras, cuando el bucle termina, la variable tiene el valor de la última propiedad visitada).
objeto
Objeto cuyas propieddes se iteran.
sentencia
Una sentencia a ejecutar por cada propiedad. Para ejecutar múltiples sentencias dentro de un bucle, utilice una sentencia block ({ ... }) para agrupar dichas sentencias.

Descripción

Un bucle for...in no itera sobre las propiedades integradas. Esto incluye todos los metodos de objetos como el indexOf() de String o el metodo Object de Object. Sin embargo, el bucle iterará sobre todas las propiedades definidas por el usuario (incluidas aquellas que sobreescriban las propiedades integradas).

Un bucle for...in recorre las propiedades de un objeto con orden arbitrario. Si una propiedad se modifica en una iteración y luego se vuelve a visitar, el valor final de la propiedad será el de la última visita. Una propiedad que se borre antes de ser visitada no será visitada más tarde. Las propiedades que se añadan al objeto en la iteración que está teniendo lugar, pueden ser tanto visitadas como omitidas en la iteración. En general, lo mejor es no añadir, modificar o borrar propiedades del objeto mientras dure la iteración sobre él, salvo sean propiedades del objeto que actualmente se esta visitando en la iteración; no existen garantías sobre que una propiedad añadida vaya a ser visitada, ni de si una propiedad modificada va a ser visitada antes de que sea modificada o después, ni siquiera de que si una propiedad es borrada vaya a ser visitada antes de borrarse o después.

Aunque pueda ser tentador utilizar esto como opción para iterar sobre un Array, es una mala idea. El for...in itera sobre propiedades definidas por el usuario ademas de sobre los elementos del array, por lo que si modifica propiedades no positivas o no enteras (por ejemplo, añadiendole una propiedad "foo"  o incluso añadiendo un metodo o propiedad a Array.prototype), el for...in devolverá el nombre de dicha propiedad definida por el usuario ademas de los índices numéricos. Ademas, dado que el orden de iteración es arbitrario, la iteración sobre un array no accederá a los elementos en orden numérico. Para esto, es mejor utilizar el for tradicional con un índice numérico cuando se itere sobre arrays.

Ejemplos

Ejemplo: Usando for...in

La siguiente función toma como argumentos un objeto y el nombre de un objeto. Entonces itera sobre todas las propiedades del objeto y devuelve una cadena que lista los nombres de las propiedades y sus valores.

function mostrar_propiedades(objeto, nombreObjeto) {
   var resultado = "";
   for (var i in objeto) {
      resultado += nombreObjeto + "." + i + " = " + objeto[i] + "\n";
   }
   return resultado;
}

Vea También

Etiquetas y colaboradores del documento

Etiquetas: 
Última actualización por: jsinner,
Ocultar la barra lateral