我在javascript中编写了这段代码:
var engiszik;
var numOfCitizens = 10;
function Engiszi()
{
var chance = random(0, 100);
this.type = chance < 67 ? "r" : (chance < 87 ? "o" : "p");
this.mood = ((type === "o") ? random(60, 100, false) : (type === "p" ? random(0, 20) : random(0, 100, false)));
this.changePlace = random(0, 15, false);
}
initialize();
function initialize()
{
engiszik = [];
for(var i = 0; i < numOfCitizens; i ++)
engiszik.push(new Engiszi());
}
random
正常工作并返回一个数字。 ?:
部分似乎也是正确的(不完全确定:括号内是否会导致错误?)。
当我加载页面时,我在行engiszik.push(new Engiszi());
处收到错误“找不到类型”。如果我从chance
的构造函数(以及使用它的东西)中删除变量Engiszi
,它似乎可以工作。
是什么原因引起的?构造函数中的var
是否将Engiszi
更改为普通函数而不是构造函数?我怎样才能找到解决方法(我真的需要chance
,但我不想在可能的情况下将其声明为全局变量)?
答案 0 :(得分:3)
让我们跟随错误来自调用行之外的地方
&#34;未找到类型&#34;在
engiszik.push(new Engiszi());
行
进入new Engiszi()
,查找type
,
this.mood = ((type === "o") ? random(60, 100, false) : (type === "p" ? random(0, 20) : random(0, 100, false)));
// ^^^^ ^^^^
type
在哪里定义?你的意思是this.type
吗?