polyhedron polyhedron - 8 days ago 4
Javascript Question

How to access a prototype's parent this from within a method's function

I have this class/function

function Menu()
{
this.closetimer = 0;
this.dropdown = 0;
}

Menu.prototype.menuTimer = function()
{
this.closetimer = setTimeout(function()
{
this.menuClose();
}, this.timeout);
}

Menu.prototype.menuClose = function()
{
if(this.dropdown) this.dropdown.css('visibility','hidden');
}


I want to call the function
menuClose()
which is part of the Menu class, but I think this code actually tries to call
menuClose()
from the
closetimer
object.

How do I reference
menuClose()
from the Menu object from within
menuTimer()
?

Answer

In your setTimeout() callback, this refers to window, just keep a reference like this:

Menu.prototype.menuTimer = function(){
    var self = this;
    this.closetimer = setTimeout(function(){
        self.menuClose();
    }, this.timeout);
}
Comments