我有一個名爲鼴鼠模塊:()爲什麼我不能在我的模塊中調用我的構造函數方法?
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