2016-05-01 19 views
-3

動的変数からクラスを作成しています。 "c1はコンストラクタではありません"というエラーです。動的に割り当てられたクラス "コンストラクタではありません"

var classes = [PathCarver, SolarSmasher, CoreCrusher, SunSlicer, VortexWaster]; 
var c1 = classes[Math.random() % classes.length - 1]; 
     this.p1 = new c1({'r' : 0, 'battlefield' : this, 'arsenalIndex' : 0}); 

このコードを意図どおりに実行するにはどうすればよいですか?

答えて

1

Math.random() % classes.length - 1 expressionは整数ではなく浮動小数点数を返します。さらに%演算子を[0; 1)の範囲の値に適用するので、[0; 1)の範囲の値になり、1を引いた値が負の値になるため、整数ではありません。

従ってc1undefinedである。

ランダムな要素を選択する場合は、ランダムな有効なインデックスを生成する代わりに、Math.floor(Math.random() * classes.length)を使用します。

+0

私はそれを試みました。私はこの問題を無作為にすることなく、クラス定義を変数に代入してからインスタンス化するだけです。自分で試してみてください。 – quantumpotato

+0

@quantumpotato問題なく動作します。https://jsfiddle.net/armhoeL7/。試してみてください。** YOURSELF **。 downvoteありがとう。 – zerkms

+0

私はあなたにdownvoteしなかった。おそらく私の実装ではエラーが発生しました。私はもう一度やり直します。 – quantumpotato

関連する問題