Iteración de matriz de Javascript usando for..in con MooTools incluido

Estoy iterando sobre una matriz en MooTools pero viendo elementos adicionales al iterar a través de la matriz usando la abreviatura for..in loop. Funciona bien cuando uso el ciclo for regular. ¿Esto es un problema con MooTools contaminando el espacio de nombres global o estoy haciendo algo mal aquí?

Hay una function createTabs() que itera sobre una matriz y crea una pestaña para cada valor en la matriz:

 function createTabs() { var myTabs = [["First", "a.png"], ["Second", "b.png"]]; for(var i in myTabs) { var tab = new Tab(myTabs[i][0], myTabs[i][1]); console.log(i); } } 

Esta es la salida de console.log(i) :

 0 1 $family each clean associate link contains extend getLast getRandom include combine erase empty flatten hexToRgb rgbToHex toJSON 

Entiendo los primeros 2 índices, pero ¿de dónde viene el rest?

Editar : Gracias por las respuestas rápidas Chetan y k Prime. Eso tiene sentido, y la adición Array.each de MooTools es una forma mucho más limpia de iterar.

Se ve mucho mejor ahora:

 myTabs.each(function(item) { var tab = new Tab(item[0], item[1]); console.log(item); }); 

2 Solutions collect form web for “Iteración de matriz de Javascript usando for..in con MooTools incluido”

for..in no está destinado a la iteración de matriz. Se itera sobre todas las properties de un object que no están incorporadas. Dado que MooTools ha agregado más funciones al prototipo Array, ahora también son properties de matriz. Mira esto https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Statements/For…in

Solo use un bucle for para la iteración de matriz.

Como señaló Chetan, for .. in está destinado a la iteración de propiedad del object, no a las matrices. sin embargo, puede iterar sobre los miembros actuales (y no los miembros henetworkingados configurados por MooTools), usando hasOwnProprty , así:

 for (i in array) if (array.hasOwnProperty(i)) { //.. do stuff ... } 

Orr, mejor aún, ya que estás usando MooTools, solo usa el método Array.each :

 array.each (function (item, index) { // ... do stuff ... }); 
  • ¿Cómo establecer nuestra configuration como valor pnetworkingeterminado en JSfiddle?
  • ¿Qué tan bueno es el soporte de jQuery para compatibilidad con versiones anteriores?
  • MooTools: ¿Cómo saber si el object es una matriz?
  • ¿Los frameworks de JavaScript existentes incorporarán CommonJS?
  • ¿Bloquea todas las inputs detrás de un div invisible en IE?
  • Mejores prácticas para methods estáticos y variables con classs de MooTools
  • Características ocultas de MooTools
  • una simple pregunta sobre el cierre de jquery
  • Eliminar class por completo con MooTools
  • Cómo get el nombre de una class Mootools desde dentro
  • ¿Qué ventajas tiene jQuery sobre otras bibliotecas de JavaScript?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.