myObj.FirstName = 'Phillip',
myObj.LastName = 'Senn';
for (var X in myObj) // FirstName LastName
for each (var X in myObj) // Phillip Senn
P: Mentalmente, ¿cómo lee estas dos afirmaciones?¿Qué significa cada uno en JavaScript?
myObj.FirstName = 'Phillip',
myObj.LastName = 'Senn';
for (var X in myObj) // FirstName LastName
for each (var X in myObj) // Phillip Senn
P: Mentalmente, ¿cómo lee estas dos afirmaciones?¿Qué significa cada uno en JavaScript?
El primero (for (in)
) está leyendo nombres de propiedades del objeto.
Por lo que puede leerlo como para cada propiedad en myObj
, asignarlo a x
.
El segundo (for each (in)
) está leyendo los valores de las propiedades en el objeto.
Ésta puede ser leído como para el valor de cada propiedad en myObj
, asignarlo a x
.
Tenga en cuenta que for each
tiene compatibilidad limitada con el navegador.
También tenga en cuenta que si aparecen propiedades adicionales en for (in)
, es porque buscará la cadena del prototipo para propiedades enumerables adicionales (y alguien puede haber aumentado Object
, por ejemplo).
Usted puede mitigar este con ...
for (var x in myObj) {
if (! myObj.hasOwnProperty(x)) {
continue;
}
// Now you are sure the property is of `myObj`
}
for (var a in b)
es una forma de obtener los índices a
de la matriz b
. Cuando estoy murmurando para mí mismo mientras leo el código, suelo decir algo como "por cada X
en myObj
".
Si usa la palabra clave each
, recuperará los valores del objeto (o matriz) en myObj
. Si lo omite, myObj
contendrá las claves (o índices de matriz).
for(var X in myObj)
Por cada miembro (clave) en myObj
for each(var X in myObj)
Para cada miembro de myObj, obtener su valor
for
itera a través de los Nombres de las propiedades del obj ect mientras que for each
itera a través de los valores de las propiedades.
Ver for each en MDN
IE8 no soporta 'para cada uno'. ¿Qué hay de IE9? – Hoque