动态分配类“;不是构造函数”;

Dynamically assigned class "is not a constructor"

本文关键字:构造函数 动态分配      更新时间:2023-09-26

从动态变量创建类。"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});

如何按预期运行此代码?

Math.random() % classes.length - 1表达式不返回整数,而是返回浮点数。更重要的是,它从来都不是整数,因为您将%运算符应用于[0; 1)范围内的值,该值与您从中减去1[0; 1)范围内的数值相加,因此它变为负数。

所以c1就是undefined

如果要选择随机元素,请使用Math.floor(Math.random() * classes.length)生成随机有效索引。