问题:我正在尝试创建一个名为 Wizard 的构造函数,它接受 2 个参数:名称和拼写,然后创建一个 Wizard 对象:
“向导的每个特定实例必须有一个名称属性(字符串)、一个字符串数组形式的拼写属性以及一个能够以字符串格式返回随机拼写的castSpell 方法。”
该对象具有以下属性:名称为“Gorrok”(字符串),拼写为“abracadabra”和“cadabraabra”(数组)。
目标:调用castSpell方法来显示随机咒语,如下所示: Gorrok:咒语
代码:到目前为止我只编写了以下代码,我陷入了这个阶段!
function Wizard(name, spells){
this.name = name;
this.spells = [spells];
this.castSpell = function(){
var v = Math.random();
if (v >= 1)
document.write(this.name + " : " + this.spells[0]);
else
document.write(this.name + " : " + this.spells[1]);
}
}
var w = new Wizard("Gorrok", "abracadabra", "cadabraabra");
w.castSpell();
最佳答案
因此,Math.random()
将返回 0 到 1 之间的数字,因此它永远不会大于 1。
此外,您无法按照现有方式将剩余参数转换为数组。
最简单的修复:
function Wizard(name, spells){
this.name = name;
this.spells = spells; // assume spells is already an array
this.castSpell = function(){
var v = Math.random();
if (v >= 0.5)
document.write(this.name + " : " + this.spells[0]);
else
document.write(this.name + " : " + this.spells[1]);
}
}
var w = new Wizard("Gorrok", ["abracadabra", "cadabraabra"]);
w.castSpell();
关于javascript - 如何创建构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545815/