Les fonctions JavaScript peuvent être hookées ; le hook est une méthode permettant de modifier dynamiquement le processus d'exécution d'une fonction ou de renvoyer des résultats. JavaScript, en tant que langage dynamique, peut également effectuer des opérations de hook. Paramètres ou variables. Remplacement et autres opérations.
L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.
Peut.
Hook est une méthode qui modifie dynamiquement le processus d’exécution ou renvoie les résultats d’une fonction, et est très largement utilisée dans les applications pratiques. En tant que langage dynamique, Javascript peut également effectuer des opérations Hook. Avec le développement du langage Javascript, les méthodes Hook se multiplient.
La traduction littérale de hook signifie hook. Dans le domaine de l'ingénierie inverse, il est généralement utilisé pour écouter, imprimer la sortie, remplacer et d'autres opérations pour certains paramètres et variables.
Les exemples sont les suivants :
Exemple de code
fonction ajouter(a,b){retour a + b}code de crochet
Il s'agit d'une fonction d'addition très simple. Les valeurs de ces deux paramètres peuvent être obtenues via Hook, ce qui équivaut à ajouter un code console.log(a,b) avant le retour, afin que les valeurs de ceux-ci deux peuvent être sortis pour analyse. Ensuite, vous pouvez utiliser la méthode suivante pour écraser la fonction, et cette méthode est le mode décorateur en JavaScript
let _add = addadd = function () { console.log('arguments', arguments) let result = _add.apply(this, arguments) console.log('result', result) return result // Si le résultat n'est pas requis, puis renvoie directement _add()}Code complet
function add(a, b) { return a + b} let _add = addadd = function () { console.log('arguments', arguments) let result = _add.apply(this, arguments) console.log('result' , résultat) renvoie le résultat } add(1, 2)Appeler à nouveau add(1,2) affichera les paramètres des arguments et le résultat 3. Un HOOK très simple est implémenté.
Cependant, cet exemple est peut-être trop simple. Ce que je veux exprimer, c'est que grâce à Hook, nous pouvons localiser la fonction et la variable que nous voulons Hook, et grâce à une série d'opérations (copie de fonction, métaprogrammation), tant que la fonction est déclenché ou utilisé (valeur, modification ), nous pouvons obtenir les résultats souhaités (les résultats avant et après (comme avant le cryptage, après le cryptage)). C'est notre objectif.
L'exemple donné dans le livre est destiné à illustrer que vous souhaitez ajouter certaines fonctions à une certaine fonction originale (comme ajouter ici), mais la fonction originale peut être écrite par d'autres développeurs, donc modifier directement la fonction originale elle-même peut conduire à BUG inconnu, vous pouvez donc utiliser la méthode ci-dessus pour copier la fonction d'origine sans détruire la fonction d'origine.