fonction sur fonction ??

Par bahcmoa, il y a 9 ans


salut,

voilà, plusieures fois il m'est arrivé de voir une fonction suivi d'une autre genre : maFonction1(arg).maFonction2() ... mais je n'arrive pas à comprendre comment construire ça ... je m'explique ... voici un code source simple :

<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>TITRE_PAGE</title> </head> <body> <div id="app"> texte du div "app" </div> <script> function getMe (selector) { return document.querySelector(selector); } function logMe (elem) { console.log(elem) ; } let tag = getMe('#app') ; logMe(tag) ; // commande que j'aimerais utiliser getMe('#app').logMe() ; // ou tag.logMe() ; </script> </body> </html>

j'ai la fonction getMe() qui récupère un tag dans la page ... ça c'est bien, mais si par exemple j'aimerais l'afficher dans la console, j'aimerais pouvoir y appliquer la fonction logMe() :

getMe('#app').logMe() ; // ou tag.logMe()

Il y a une chose qui m'échappe car j'ai bien essayé deux ou trois trucs mais je n'ai que des erreurs ... si quelqu'un pouvait me donner un début de piste ça serait super !! ... je pense qu'il faut passer par un objet mais il me manque le petit truc qui fait que ça marcherait

D'avance merci :-)

3 réponses

keulu, il y a 9 ans

ben c'est pas vraiment possible "facilement" (tout est tjrs possible)
dans ton cas, le mieux serait de faire logMe(getMe('#app'))

keulu, il y a 9 ans

avec du jquery, c'est déja un peu plus simple...

pour utiliser :
$('.my_class').my_function();

il faut déclarer :

(function($){ $.fn.my_function = function(){ ... }; })(jQuery);
Pandazaur, il y a 9 ans

Bonjour, sinon tu as la possiblité d'utiliser l'objet Promise:

function getMe (selector) { return new Promise((resolve, reject) => { resolve(document.querySelector(selector)); } }

Tu peux ensuite faire:

getMe('#app').then(domObj => { console.log(domObj); }