我有一个名为鼹鼠模块:()为什么我不能在我的模块中调用我的构造函数方法?
var Mole = (function(){
function mole(id){
this.id = id;
}
var randomMole = function(){
var moleIndex = Math.ceil(Math.random() * 8);
var mole = moles[moleIndex];
return mole.id;
}
var score = 0;
var moles = [];
var generateMoles = function(){
for(var i = 1; i <= 8; i++){
var mole = new mole(i);
moles.push(mole);
}
}
return {
init: function(){
//var mole = mole;
generateMoles();
},
randomMole: randomMole,
score: function(){
return score;
},
incrementScore: function(){
score += 1;
}
}
})()
我打电话Mole.init当文件已准备就绪。
这将调用generateMoles方法,该方法使用模块顶部的摩尔构造函数。除了当摩尔构造是我generateMoles函数中调用我得到这个错误:
model.js:19 Uncaught TypeError: mole is not a constructor
为什么不是摩尔构造?我将它定义为模块顶部的一个。
我认为这可能是因为mole函数在init()函数中被调用时不在generateMoles的作用域中,因为init函数会为generateMoles创建一个新的闭包,该闭包不包含该构造函数。所以我尝试了在init函数中定义痣的方法,所以它将被包含在为生成Moles而给出的闭包中。但是不管我是否这样做,我仍然会得到相同的错误。
所以现在我不知道为什么我不能叫新的鼹鼠()..任何帮助将不胜感激。谢谢。
我的模块称为鼹鼠和我由构造的里面它称为摩尔(小写) ,通过说新的mole()不是我使用我在模块内定义的构造函数? – srlrs20020