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 ... }); 
  • Arrastre con mootools en el mobile
  • Accediendo a un Método de Clase MooTools desde fuera de la class
  • cómo modificar slimbox para cerrar haciendo clic en la image expandida
  • Ancho de split expandir / contraer onclick
  • ¿Hay algún script que pueda detenerse para mostrar ALT = "text" como información sobre herramientas en IE 6 y 7?
  • Twitter Bootstrap Carousel usando Joomla y sus Mootools
  • ¿Qué hace Function.prototype.overloadSetter () de MooTools?
  • ¿Por qué jQuery es tan ampliamente adoptado en comparación con otros frameworks de Javascript?
  • Objeto Javascript devuelve valores basura
  • ¿Hay alguna guía sobre la conversión entre frameworks de Javascript?
  • JQuery equivalente de MooTools bind (this)
  • jQuery: Abre la window Cargar file presionando un enlace o una image.
  • ¿Existe una forma viable de ofrecer detección de soporte para la image: database64
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.