javascript:在构造函数中定义var使其无法使用

时间:2015-08-17 16:32:11

标签: javascript constructor

我在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,但我不想在可能的情况下将其声明为全局变量)?

1 个答案:

答案 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吗?