105
rated 0 times
[
111]
[
6]
/ answers: 1 / hits: 17912
/ 12 Years ago, thu, june 28, 2012, 12:00:00
How can I use call with setInterval to get an object literal to invoke one of its own methods?
Here's an example.
This works, and I understand why it works.
The timer object calls its own tick method once each second
var timer =
{
start: function()
{
var self = this;
setInterval(function(){self.tick();}, 1000);
},
tick: function()
{
console.log(tick!);
}
};
timer.start();
I tried to simplify this code by using call.
This next example is the best that I came up with.
But it doesn't work: the tick method is called only once, and then I get a type error.
var timer =
{
start: function()
{
setTimeout.call(this, this.tick(), 1000);
},
tick: function()
{
console.log(tick!);
}
};
timer.start();
I think I don't really understand how call works.
Can anyone explain what I'm doing wrong?
More From » binding