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


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

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);

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);
    }