Javascript: retourne la fonction avec des arguments prédéfinis
J'ai une fonction comme
function a (p1, p2) { /* ... */ }
et dans une certaine étendue voulez obtenir quelque chose comme ceci:
function b (/* no params! */) { return a (my1, my2) }
où my1 et my2 sont définis en quelque sorte dans ce champ d'application. Donc, je devrais obtenir une fonction sans paramètre b, qui, lorsqu'on les appelle des appels avec des paramètres fixes my1 et my2. Maintenant, la question est de savoir pourquoi ce n'est pas droit, et qui est 🙂
UPD: Ok, j'ai eu quelques rappels dans les params, maintenant découvert, de façon à les traiter. Ce que j'ai raté a été d'appliquer la technique à deux reprises. Merci.
source d'informationauteur stanch
Vous devez vous connecter pour publier un commentaire.
Il suffit de faire une fonction qui renvoie une nouvelle fonction b:
et de l'utiliser comme ceci:
Écrire une fonction qui prend my1 et my2 et crée la fonction b:
Pourquoi ce n'est pas droit? Êtes-vous une erreur? J'ai essayé de reproduire un échantillon de travail fondée sur la description et ce que j'ai fonctionne donc peut-être que vous pourriez un post plus détaillé de l'échantillon:
Modifier
Basé sur votre commentaire à l'autre réponse que j'ai mis à jour mon exemple pour montrer comment vous pouvez l'envelopper d'une fonction.
Edit 2
Ok, donc je les ai remplacés par des variables;-)
Je ne sais pas si je vous ai bien compris, mais vous pouvez toujours regarder un concept appelé nourrissage. Il est possible d'obtenir une fonction en Javascript tels que vous pouvez obtenir une autre fonction avec certains ou tous les paramètres de préréglage.
Vous pouvez regarder une mise en œuvre ici.
Si vous êtes à l'aide de Prototype, vous pouvez obtenir la fonction b de cette façon.
appelle maintenant
b()
est le même que l'appel à laa(arg1, arg2)
Mettre les valeurs dans un tableau (ou JSON) et de retourner le tableau.
Peut-être que je manque le point dans votre exemple, je ne sais pas.
Il semble y avoir trois parties:
La définition d'un:
La définition de b:
À l'aide de b:
Cet exemple utilise l'affectation d'un gestionnaire d'événement onclick
lors du chargement de la page pour montrer comment créer une fonction
référence renferme des références à des
les valeurs dans la fonction de configuration.
La véritable magie est juste quelques lignes
La première série de parens cause le contenu à être évalué à une fonction de référence.
La deuxième série de parenthèses ... (my1,my2) ... cause de la fonction de référence pour être appelé
qui renvoie une autre fonction de référence qui peut voir les paramètres passés dans
... scopePass_My1,scopePass_My2 ... et est capable de les transmettre à votre cible en fonction de a(p1,p2)
Espère que ça aide.