Comment accéder à un prototype de la mère à partir de la méthode de la fonction de
J'ai cette classe/fonction
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');
}
Je veux appeler la fonction menuClose()
qui fait partie de la classe Menu, mais je pense que ce code tente d'appeler menuClose()
de la closetimer
objet.
Comment dois-je faire référence menuClose()
dans le Menu objet dans menuTimer()
?
OriginalL'auteur polyhedron | 2010-11-01
Vous devez vous connecter pour publier un commentaire.
Dans votre
setTimeout()
rappel,this
se réfère àwindow
, il suffit de garder une référence comme ceci:bienvenue 🙂
OriginalL'auteur Nick Craver
Une autre façon est de se lier à l'intérieur de la fonction.
setTimeout(this.menuClose.bind(this), this.timeout)
?Vous avez absolument raison, et j'ai mis à jour pour montrer. C'est de loin la meilleure solution. Donnez-moi tous les suffrages!
Cela ne vous faire paraître un peu gourmand 🙂
l'équivalent de prototype de la fonction de liaison en jQuery $.proxy. Très utile.
Et ils disent que jQuery est plus court à écrire! 😛
OriginalL'auteur clockworkgeek
vous définissez une référence vers le Menu (ce) alors que vous avez accès à..
var _self
pour se prémunir contre les collisions avec l'espace de noms global.déjà corrigé, merci 🙂 la gâchette ..
OriginalL'auteur Gabriele Petrioli