Fonction crochets Javascript

EDIT: OK, je crois que les solutions suivantes sont valides:

  1. Utiliser le jQuery AOP plugin. Essentiellement, il enveloppe le vieux de la fonction en collaboration avec le crochet dans une fonction sandwich et réassigne à l'ancien nom de la fonction. Cela provoque l'imbrication de fonctions avec chaque nouveau crochet.
    Si jQuery n'est pas utilisable pour vous, il suffit de le pillage du code source, il ne semble pas y avoir de jQuery dépendances dans le plugin, et la source est simple et très petite.
  2. Ont un objet décrivant tous les crochets et leurs objectifs, et de stocker le initiale non modifiée de la fonction. Lors de l'ajout d'un nouveau raccordement, de l'emballage à refaire autour de la fonction d'origine, au lieu de ré-enrouler le précédent habillage de la fonction.
    De vous échapper de fonctions imbriquées, et obtenir deux objets à manipuler à la place. Potentiellement, cela pourrait également signifier plus facile crochet de manutention, si vous ajoutez/supprimez les crochets souvent et de commande.

Je vais aller avec le premier, puisque c'est déjà fait, et je n'ai pas de performance à s'inquiéter. Et depuis que les fonctions ne sont pas affectées, même si je passe accrochage méthodes, je vais seulement besoin de refaire le crochet en ajoutant, ce qui pourrait être juste une simple recherche&remplacer des opérations.


Salut,

Est-il possible de créer un mécanisme, dans lequel la fonction A aurait pu avoir un jeu de crochets(les fonctions à exécuter avant/après de la fonction A)?

Idéalement, la fonction ne serait pas conscient de l'accrochage de la fonctionnalité, de sorte que je n'ai pas à modifier le code source de la fonction à appeler les crochets. Quelque chose comme:

A = function(){
    alert("I'm a naive function");
};
B = function(){
    alert("I'm having a piggyback ride on function A!"+
          "And the fool doesn't even know it!");
};
addHook(B, A)//add hook B to function A
A()
//getting alerts "I'm a naive function"/"I'm having a 
//piggyback ride on function A! And the fool doesn't even know it!"

J'ai essayé de pirater quelque chose pour un couple d'heures, mais jusqu'à présent aucune chance.

source d'informationauteur Seyen