2017-03-05 19 views
-2

オブジェクトの4つの異なるインスタンスをすべて別の名前で生成するには、forループが必要です。オブジェクトのインスタンスの名前をループする

for(z = 0; z < 4; z++) { 
     obstacleY = 699 + (z * 100); 
     console.log(obstacleY); 
     mg_terrain = new mg_terrain(1000, obstacleY, 120, 30); 
} 

私はmg_terrain + z = new mg_terrain(...)のような記述をしたいと思います。私はこれを行う正しい方法を知らない。

+2

明白な問題の1つは、コンストラクタをインスタンス名でシャドーイングしていることです。しかし、4つのインスタンスが必要な場合は、配列を使用するだけではどうですか? – jonrsharpe

答えて

1

あり、このためdupetargetにする必要がありますが、基本的に、あなたは配列使用:

var terrains = [];           // *** 
for(z = 0; z < 4; z++) { 
    obstacleY = 699 + (z * 100); 
    console.log(obstacleY); 
    terrains[z] = new mg_terrain(1000, obstacleY, 120, 30); 
// ^^^^^^^^^^^ 
} 

を配列あなたは、物事の順序付きコレクションを維持することができます - この場合には、mg_terrainオブジェクトを - インデックス(0,1など)でアクセスします。

配列の長さを知りたい場合は、lengthプロパティ(terrains.length)を使用します。配列の最高のインデックスは、lengthより1つ小さい値です(たとえば、lengthが4の場合、インデックス0,1,2、および3の4つのアイテムがあります)。

+0

dupetargetが見つかりました:http://stackoverflow.com/questions/14442896/dynamic-variable-name-in-loop –

関連する問題