CodeGym /Java Kurs /Frontend SELF DE /Methoden call, bind und apply

Methoden call, bind und apply

Frontend SELF DE
Level 44 , Lektion 3
Verfügbar

8.1 Methode call

Die Methoden call, bind und apply in JavaScript spielen eine entscheidende Rolle bei der Verwaltung des Ausführungskontexts von Funktionen, indem sie erlauben, den Wert von this beim Aufrufen von Funktionen festzulegen. Diese Methoden sind besonders nützlich, wenn man mit Objekten und funktionaler Programmierung arbeitet, und bieten mächtige Werkzeuge für die flexible Verwaltung von Code. Lassen Sie uns jede der Methoden im Detail betrachten und verschiedene Beispiele ihrer Verwendung durchgehen.

Die Methode call ruft eine Funktion mit einem bestimmten Wert von this und Argumenten auf, die durch Kommas getrennt sind. Dies ermöglicht uns, explizit den Kontext zu bestimmen, in dem eine Funktion ausgeführt werden soll.

Syntax:

    
      func.call(thisArg, arg1, arg2 ...);
    
  

Beispiel:

In diesem Beispiel wird die Funktion greet mit dem Kontext person aufgerufen, was es ihr ermöglicht, die Eigenschaft name des Objekts person zu verwenden.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      greet.call(person, 'Hallo', '!'); // Ausgabe: Hallo, John!
    
  

8.2 Methode apply

Die Methode apply ist ähnlich wie call, übergibt jedoch die Argumente in Form eines Arrays. Dies ist praktisch, wenn wir ein Array von Argumenten haben, das wir an eine Funktion übergeben möchten.

Syntax:

    
      func.apply(thisArg, [argsArray]);
    
  

Beispiel:

Dieses Beispiel ist ähnlich dem vorherigen, jedoch werden die Argumente als Array übergeben.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      greet.apply(person, ['Hallo', '!']); // Ausgabe: Hallo, John!
    
  

8.3 Methode bind

Die Methode bind erstellt eine neue Funktion, die bei Aufruf einen bestimmten Wert von this setzt. Argumente, die an bind übergeben werden, sind in der neuen Funktion festgelegt. Dies ermöglicht es, Funktionen mit einem konstanten Kontext zu erstellen.

Syntax:

    
      const boundFunc = func.bind(thisArg, arg1, arg2 ...);
    
  

Beispiel:

In diesem Beispiel wird eine neue Funktion boundGreet erstellt, die immer im Kontext des Objekts person ausgeführt wird.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      const boundGreet = greet.bind(person, 'Hallo');
      boundGreet('!'); // Ausgabe: Hallo, John!
    
  

8.4 Detaillierte Analyse der Verwendung von Methoden

1. Verwendung von call zur Vererbung von Methoden:

Die Methode call wird oft verwendet, um Methoden eines Objekts von einem anderen zu erben. Dies ermöglicht es, Methoden und Eigenschaften zu übernehmen, ohne eine explizite Vererbung einzuführen.

In diesem Beispiel wird der Konstruktor Product im Kontext des Objekts Food aufgerufen, was es erlaubt, die Eigenschaften name und price zu erben.

JavaScript
    
      function Product(name, price) {
        this.name = name;
        this.price = price;
      }

      function Food(name, price, category) {
        Product.call(this, name, price);
        this.category = category;
      }

      const cheese = new Food('Käse', 5, 'Milchprodukte');
      console.log(cheese); // Ausgabe: Food { name: 'Käse', price: 5, category: 'Milchprodukte' }
    
  

2. Verwendung von apply zur Übergabe eines Arrays von Argumenten:

Die Methode apply ist nützlich, wenn wir ein Array von Argumenten an eine Funktion übergeben möchten, die einzelne Parameter erwartet.

In diesem Fall wird das Array numbers an die Funktion sum als einzelne Argumente übergeben.

JavaScript
    
      function sum(a, b, c) {
        return a + b + c;
      }

      const numbers = [1, 2, 3];
      console.log(sum.apply(null, numbers)); // Ausgabe: 6
    
  

3. Verwendung von bind zur Erstellung einer Funktion mit festem Kontext:

Die Methode bind ermöglicht es, Funktionen mit einem konstanten Kontext zu erstellen, was besonders nützlich ist, wenn wir mit Ereignissen und Rückrufen arbeiten.

Hier wird die Funktion getX mithilfe von bind an das Objekt module gebunden, wodurch der richtige Wert für x beim Aufruf der Funktion abgerufen werden kann.

JavaScript
    
      const module = {
        x: 42,
        getX: function() {
          return this.x;
        }
      };

      const unboundGetX = module.getX;
      console.log(unboundGetX()); // Ausgabe: undefined

      const boundGetX = unboundGetX.bind(module);
      console.log(boundGetX()); // Ausgabe: 42
    
  

8.5 Beispiele aus dem echten Leben

Beispiel für die Verwendung von call zum Ausleihen einer Array-Methode:

In diesem Beispiel wird die Methode forEach des Arrays mithilfe von call für das Objekt arguments verwendet.

JavaScript
    
      function printArguments() {
        Array.prototype.forEach.call(arguments, function(item) {
          console.log(item);
        });
      }

      printArguments(1, 2, 3); // Ausgabe: 1, 2, 3
    
  

Beispiel für die Verwendung von apply zum Zusammenführen von Arrays:

Hier wird die Methode push mithilfe von apply verwendet, um zwei Arrays zusammenzuführen.

JavaScript
    
      const array1 = [1, 2, 3];
      const array2 = [4, 5, 6];

      Array.prototype.push.apply(array1, array2);
      console.log(array1); // Ausgabe: [1, 2, 3, 4, 5, 6]
    
  

Beispiel für die Verwendung von bind zur Erstellung einer teilweisen Funktion:

Die Funktion double wird mit einem festgelegten ersten Argument 2 mithilfe von bind erstellt.

JavaScript
    
      function multiply(a, b) {
        return a * b;
      }

      const double = multiply.bind(null, 2);
      console.log(double(5)); // Ausgabe: 10
    
  
1
Опрос
CRUD und Arbeiten mit API,  44 уровень,  3 лекция
недоступен
CRUD und Arbeiten mit API
CRUD und Arbeiten mit API
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION