Javascript “动态分配类”;“不是一个构造函数”;
从动态变量创建类。“c1不是构造函数”错误 如何按预期运行此代码?Math.random()%classes.length-1表达式不返回整数,而是返回浮点数。更重要的是,它从来不是整数,因为您将Javascript “动态分配类”;“不是一个构造函数”;,javascript,Javascript,从动态变量创建类。“c1不是构造函数”错误 如何按预期运行此代码?Math.random()%classes.length-1表达式不返回整数,而是返回浮点数。更重要的是,它从来不是整数,因为您将%运算符应用于[0;1)范围中的值,该值以从[0;1)范围中减去1的值结束,因此它变为负值 所以c1是未定义的 如果要拾取随机元素,请使用Math.floor(Math.random()*classes.length)而是生成一个随机的有效索引。我试过了。即使没有随机性,我也遇到过这个问题——只是将类定
%
运算符应用于[0;1)
范围中的值,该值以从[0;1)
范围中减去1
的值结束,因此它变为负值
所以c1
是未定义的
如果要拾取随机元素,请使用Math.floor(Math.random()*classes.length)
而是生成一个随机的有效索引。我试过了。即使没有随机性,我也遇到过这个问题——只是将类定义赋给变量,然后实例化它们。请自己试试。@quantumpotato它工作正常。请自己试试。谢谢你的否决票。我没有否决你。也许我的impl中出错了更正。我会再试一次。我输入了%而不是*。谢谢大家的帮助!
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});