Définir une fonction de rappel à l'intérieur d'une classe javascript
excuse le code de pseudo, mon fichier réel est beaucoup plus vaste:/
Je veux appeler une fonction (avec paramètres) à partir de l'intérieur de la classe. Cependant, cette fonction doit être transmis à la classe comme une variable.
someObject = {
itWorked:function(answer){
alert(answer);
},
plugins:{
somePlugin:function(){
var callback;
this.doSomething = doSomething;
function setCallback(c){
callback = c;
}
function doSomething(){
var answer = "hello";
[callback](answer); //how do I call this?
}
}
},
widgets:{
something:function(){
var doIt = new someObject();
doIt.setCallback(someObject.itWorked()); //how do I send this?
doIt.doSomething();
}
}
}
Alors, comment aurais-je passer itWorked()
la classe?
Et comment pourrais-je appeler que itWorked(answer)
fonction au sein de la classe ainsi que la transmission d'une variable si?
OriginalL'auteur ed209 | 2011-11-27
Vous devez vous connecter pour publier un commentaire.
Supprimer les parenthèses pour passer à la fonction d'une variable.
Vous pouvez ensuite utiliser la fonction de rappel comme vous le feriez pour toute autre fonction.
Vous devriez également vérifier si la fonction de rappel existe et est un fichier exécutable fonction:
if (callback && typeof(callback) === "function") {}
OriginalL'auteur JJJ
Vous aurez besoin de changer
à
de sorte que le setCallback la fonction publique.
Si vous aussi vous voulez à portée de la fonction de rappel, vous pouvez l'appeler comme ça
Si vous ne savez pas comment de nombreux paramètres, vous pouvez l'appeler comme cela
Champ d'application pourrait être n'importe quel objet, même vide {} si vous le souhaitez.
En passant, j'aime vraiment votre utilisation de variables privées dans cet exemple, l'excellent travail avec le javascript. Voici une bonne façon d'écrire votre objet javascript pour aider à l'initialisation et la lisibilité
Puis de l'utiliser
Bien que vous êtes hors d'un bon début, c'est bien écrit en javascript.
savez-vous si il y a un __construct() équivalent pour le javascript? Ainsi, plutôt que d'appeler
doIt.setCallback(someObject.itWorked)
de le transmettre à lanew someObject()
scène?la fonction
someObject
est la fonction de constructeur. La loi sur les fonctions que les constructeurs lorsqu'il est utilisé avecnew
Cochez cette doc sur .appliquer() et .call()
OriginalL'auteur Zoidberg