2016-11-25 2 views
0

私は50ミリ秒ごとに実行するループを持つクラスを持っていますが、setIntervalを使用するとthis.lop()を実行できませんそのはのsetInterval関数内でのループを()見つけようとしてではなく、クラスはので、私は、すべてうまく動作setinterval(function(){self.loop()})self=thisを行なったし、それまでは良いが、私はそうし、それらの2を作っただけで、それらの一つは、実行中のループを持っていたクラス内でsetIntervalを使用し、それらのクラスを複数作成するjavacript

コード:

enemy = function(){ 
self=this 
setinterval(function(){self.loop()}) 

this.loop=function(){ 
    code 
} 
} 

enemy1 = new enemy 
enemy2 = new enemy 

どのようにすれば敵1と2がループしていて敵2でないのですか

答えて

0

どこにでもvarの変数宣言がありません。

グローバル変数が作成されるということです。 enemy,enemy1およびenemy2変数では重要ではありません。

しかし、変数selfはすべてのインスタンスで共有されます。

したがって、修正:常に変数をvarと宣言してください。

参考文献:

+0

正確だった、それはあなたに感謝します! –

0

これを試してみてください。.. :)

var enemy = function(){ 
 
    _SELF = this; 
 
    _SELF.loop = function(){ 
 
    // your code 
 
    if(true) _SELF.loop(); // add a condition to stop the loop! 
 
    } 
 
} 
 

 
var enemy1 = new enemy(); 
 
var enemy2 = new enemy(); 
 
var enemy3 = new enemy();

関連する問題