Maison >interface Web >Questions et réponses frontales >Les fonctions JavaScript peuvent-elles être accrochées ?

Les fonctions JavaScript peuvent-elles être accrochées ?

WBOY
WBOYoriginal
2022-06-29 16:57:381391parcourir

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. Les hooks sont généralement utilisés pour écouter et imprimer certains paramètres ou variables. . Sortie, remplacement et autres opérations.

Les fonctions JavaScript peuvent-elles être accrochées ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.

Les fonctions JavaScript peuvent-elles être accrochées

Oui.

Hook est une méthode permettant de modifier dynamiquement le processus d'exécution d'une fonction ou de renvoyer des résultats, 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, il existe de plus en plus de méthodes Hook.

hook signifie littéralement 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.

L'exemple est le suivant :

Exemple de code

function add(a,b){
return a + b
}

hook code

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 à l'ajout d'un code. console.log avant return (a,b), afin que les valeurs de ces deux puissent être sorties pour analyse. Ensuite, vous pouvez utiliser la méthode suivante pour réécrire la fonction, et cette méthode est le mode décorateur en JavaScript

let _add = add
add = function () {
  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result // 如果不需要result 则可直接return _add()
}

Code complet

function add(a, b) {
  return a + b
}
 
let _add = add
add = function () {
  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result 
}
 
add(1, 2)

Appelez à nouveau add(1,2) et les paramètres d'arguments et le résultat 3 seront affichés A très. CROCHET simple Cela a été réalisé.

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 à travers une série d'opérations (copie de fonction, métaprogrammation), à condition que le Si la fonction est déclenchée ou utilisée (valeur, modifier) ​​cette variable, 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 pour 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 réécrire la fonction d'origine sans détruire la fonction d'origine.

【Recommandations associées : tutoriel vidéo javascript, front-end web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn