2016-05-01 46 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表達式不返回一個整數,而是一個浮點數。甚至更多,它從來不是整數,因爲您將%運算符應用於[0; 1)範圍內的值,該值範圍爲[0; 1)範圍內的值,因此您將減去1,因此它變爲負值。

所以c1undefined

如果您想選取一個隨機元素,請使用Math.floor(Math.random() * classes.length)代替生成隨機有效索引。

+0

我試過了。即使沒有隨機,我也遇到了這個問題 - 只需將類定義分配給變量,然後實例化它們即可。請自己嘗試。 – quantumpotato

+0

@quantumpotato它沒有問題https://jsfiddle.net/armhoeL7/。請嘗試一下** YOURSELF **。感謝downvote。 – zerkms

+0

我沒有讓你失望。也許我在執行過程中出錯。我會再試一次。 – quantumpotato

相關問題