質問

私はMooToolsはの配列を反復が、速記for..inループを使用して、配列を反復処理するときに、追加の項目を見ています。私は定期的にforループを使用するとき、それは正常に動作します。これはMooToolsのは、グローバルな名前空間を汚染または私はここで何か間違ったことをやっているとの問題ですか?

は、配列を反復処理し、アレイ内の各値のタブを作成しcreateTabs()機能があります

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);
    }
}

このはconsole.log(i)の出力があります:

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

私は、最初の2つの索引を理解しますが、どこ残りはから来ている?

編集:迅速な回答をチェタンてくれてありがとうと首相をKです。それは理にかなっている、とMooToolsのことでArray.each添加が反復処理する非常にクリーンな方法です!

今多くの方になります。

myTabs.each(function(item) {
    var tab = new Tab(item[0], item[1]);
    console.log(item);
});
役に立ちましたか?

解決

for..inは、配列の反復のためのものではありません。これは、ビルトインされていないオブジェクトのすべてのプロパティを反復処理しました。 MooToolsは、アレイのプロトタイプに複数の機能を追加しているので、それらは同様に今アレイのプロパティです。この https://developer.mozilla.org/En/Core_JavaScript_1を参照してください。 .5_Reference /ステートメント/については... の中に

ただ、配列の反復のループのための基本的なを使用します。

他のヒント

Chetanさんが指摘したように、

for .. inは、オブジェクトプロパティの繰り返しではなく、アレイのためのものです。しかし、あなたがそうのように、hasOwnProprtyを使用して、現在のメンバー(とないMooToolsはで設定された継承されたメンバー)を、反復処理することができます:

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

オア、より良いまだ、あなたはMooToolsのを使用していることから、ちょうどArray.eachメソッドを使用します:

array.each (function (item, index)
{
    // ... do stuff ...
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top