私はほくろと呼ばれるモジュールがあります。モジュール内でコンストラクタメソッドを呼び出すことができないのはなぜですか?
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
なぜコンストラクタをはモルれていませんか?私はそれをモジュールの一番上のものとして定義しました。
モルのメソッドがgenerate()関数で呼び出されたときに、moleメソッドがgenerateMolesの範囲にないため、init関数がmoleコンストラクタを含まないgenerateMolesの新しいクロージャを作成するためです。だから私はinit関数でモルを定義することを試みたので、generateMolesに与えられたクロージャにインクルードされます。しかし、私はこれを行うかどうかにかかわらず同じエラーを受け取ります。
だから私はなぜ新しいモル()を呼び出すことができないのか考えていません。どんな助けでも大歓迎です。ありがとう。
私のモジュールはほくろと呼ばれ、私はそれの内部コンストラクタは、モル(小文字)と呼ば行われ、新しいmole()と言って私はモジュール内で定義したコンストラクタ関数を使用していませんか? – srlrs20020