Re: 'this' and setInterval
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.javascript archive

Re: 'this' and setInterval

From: Julian Turner <julian@baconbutty.com>
Date: Fri Nov 18 2005 - 13:49:06 CET

Andrew Poulos wrote:

> If I have some code that's a bit like this
>
> Con = function() {
> this.op = 1;
> this.count = 0;
> }
> Con.prototype.loop = function() {
> this.doNext = setInterval(this.next, 100);
> }
> Con.prototype.next = function() {
> this.count++;
> if (this.count > 10) clearInterval(this.doNext);
> }
>
> obj = new Con();
>
> when I call obj.loop(); 'this' in obj.next refers to setInterval
> and not obj . I realise I can add var ref = this; and send it with
> setInterval but is there something I can do to get 'this' to refer to
> obj when in obj.next ?

AFAIK, the contents of the "this" keyword cannot be altered, and
closures are a normal way of handing the problem:-

Con.prototype.loop = function() {
   var ref=this;
   this.doNext = setInterval(function(){ref.next();}, 100);
}

Regards

Julian
Received on Mon Nov 21 03:33:46 2005