Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “动态分配类”;“不是一个构造函数”;_Javascript - Fatal编程技术网

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

Javascript “动态分配类”;“不是一个构造函数”;,javascript,Javascript,从动态变量创建类。“c1不是构造函数”错误 如何按预期运行此代码?Math.random()%classes.length-1表达式不返回整数,而是返回浮点数。更重要的是,它从来不是整数,因为您将%运算符应用于[0;1)范围中的值,该值以从[0;1)范围中减去1的值结束,因此它变为负值 所以c1是未定义的 如果要拾取随机元素,请使用Math.floor(Math.random()*classes.length)而是生成一个随机的有效索引。我试过了。即使没有随机性,我也遇到过这个问题——只是将类定

从动态变量创建类。“c1不是构造函数”错误

如何按预期运行此代码?

Math.random()%classes.length-1表达式不返回整数,而是返回浮点数。更重要的是,它从来不是整数,因为您将
%
运算符应用于
[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});