Lier le contexte de la fonction

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer comment créer une fonction qui lie un contexte donné à une autre fonction. La fonction bind() nous permet de définir facilement la valeur de this à l'intérieur d'une fonction à un objet spécifique, ce qui peut être utile dans certains scénarios. Nous allons également apprendre à utiliser l'opérateur de propagation pour passer des arguments supplémentaires à la fonction liée.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/ToolsandEnvironmentGroup(["Tools and Environment"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/functions("Functions") javascript/BasicConceptsGroup -.-> javascript/str_manip("String Manipulation") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") javascript/ToolsandEnvironmentGroup -.-> javascript/debugging("Debugging") subgraph Lab Skills javascript/variables -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/data_types -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/arith_ops -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/comp_ops -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/functions -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/str_manip -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/spread_rest -.-> lab-28174{{"Lier le contexte de la fonction"}} javascript/debugging -.-> lab-28174{{"Lier le contexte de la fonction"}} end

Créer une fonction avec un contexte donné

Pour créer une fonction avec un contexte donné, utilisez la fonction bind. Tout d'abord, ouvrez le Terminal/SSH et tapez node.

La fonction bind crée une nouvelle fonction qui invoque la fonction d'origine avec un contexte donné. Elle peut également optionnellement ajouter tous les paramètres supplémentaires fournis aux arguments.

Pour utiliser bind, passez la fonction d'origine (fn) et le contexte souhaité (context). Vous pouvez également passer tout paramètre supplémentaire qui doit être lié à la fonction (...boundArgs).

La fonction bind renvoie une nouvelle fonction qui utilise Function.prototype.apply() pour appliquer le context donné à fn. Elle utilise également l'opérateur de propagation (...) pour ajouter tous les paramètres supplémentaires fournis aux arguments.

Voici un exemple d'utilisation de bind :

const bind =
  (fn, context, ...boundArgs) =>
  (...args) =>
    fn.apply(context, [...boundArgs, ...args]);

function greet(greeting, punctuation) {
  return greeting + " " + this.user + punctuation;
}

const freddy = { user: "fred" };
const freddyBound = bind(greet, freddy);
console.log(freddyBound("hi", "!")); // 'hi fred!'

Dans cet exemple, nous définissons une fonction greet qui prend deux paramètres (greeting et punctuation) et renvoie une chaîne de caractères qui combine le greeting, la propriété user du contexte actuel (this) et la punctuation.

Nous créons ensuite un nouvel objet (freddy) qui a une propriété user définie sur 'fred'.

Enfin, nous créons une nouvelle fonction (freddyBound) à l'aide de bind, en passant la fonction greet et l'objet freddy comme contexte souhaité. Nous pouvons ensuite appeler freddyBound avec deux paramètres supplémentaires ('hi' et '!'), qui sont passés à la fonction greet d'origine, ainsi que le contexte freddy lié. La sortie résultante est 'hi fred!'.

Sommaire

Félicitations ! Vous avez terminé le laboratoire sur la liaison du contexte de fonction. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.