J'essaie d'écrire une méthode d'aide en JavaScript. Il devrait agir différemment si l'on envoie une fonction ou une référence à une fonction.Savoir si la fonction est anonyme ou est définie dans un objet
Je veux vous l'utiliser comme ceci:
helper('div', function() { return false; })
helper('div', obj.fn)
Ce que je ne peux pas comprendre est la suivante: comment l'intérieur de la fonction d'aide faire la différence entre les deux?
Je pense qu'il est dû à cette JavaScript évalue d'abord la obj.fn avant qu'elle ne l'envoie dans. La seule solution que j'ai trouvé est d'envoyer le obj.fn comme obj, à savoir
helper('div', { fn: obj.fn })
Je peut faire la différence entre les deux avec typeof. Mais j'aime vraiment un moyen de le faire sans la déclaration d'objet supplémentaire.
Avez-vous une raison particulière pour laquelle vous voulez distinguer deux fonctions? – Boldewyn
"Il faut agir différemment si l'on envoie une fonction ou une référence à une fonction" - qu'est-ce que cela signifie?Comment définissez-vous la différence entre une "fonction" et une "référence à une fonction"? Dans votre premier exemple, le paramètre passé à helper sera une référence à une fonction dans les deux sens. –
@Tim Down, qui m'a aussi troublé mais je pense que le demandeur suppose que le passage d'une fonction anonyme passe par valeur-value et que passer une méthode objet passe par-référence qui est faux bien sûr mais c'est une erreur de nombreux développeurs. –