У меня есть метод, который является большой инструкцией setInterval, и ему нужен доступ к this объекту, которому принадлежит метод, изнутри интервала. Я реализовал простое замыкание, но оно не выглядит очень элегантным:
connect: function(to, rate, callback){
var cthis = this, //set cthis to this,
connectIntervalID = setInterval(function(){
if(cthis.attemptConnect(to)){ //reference it here,
clearInterval(connectIntervalID)
cthis.startListening(10) //here,
callback && callback.apply(cthis, []) //and here
}
}, rate)
}
Вы также можете сделать это с помощью apply или call , если вы хотите использовать this вместо cthis
connect: function(to, rate, callback){
var cthis = this,
tempFunc = function(){
if(this.attemptConnect(to)){
clearInterval(connectIntervalID)
this.startListening(10)
callback && callback.apply(this, [])
}
}�
connectIntervalID = setInterval(function(){tempFunc.apply(cthis, [])}, rate)
}
Однако, это кажется еще хуже ...