JavaScript & TypeScript
1 Minute

Die Methoden call(), bind() und apply() in JavaScript

Kurz gesagt, die call Methode in JavaScript ermöglicht es, eine Funktion aufzurufen und dabei explizit das Objekt festzulegen, auf das this in der Funktion verweist. Die apply Methode ist ähnlich wie call, jedoch erwartet sie die Argumente als Array. Die bind Methode erstellt eine neue Funktion, bei der das this dauerhaft an ein bestimmtes Objekt gebunden ist, ohne die Funktion sofort auszuführen.

Um es einfach zu erklären, stell dir vor, du hast ein Werkzeugkasten voller nützlicher Funktionen. Manchmal möchtest du eine bestimmte Funktion verwenden, aber du möchtest, dass sie mit einem anderen Werkzeug arbeitet. Das ist genau das, was diese Methoden tun: Sie helfen dir dabei, eine Funktion so zu verwenden, als ob sie zu einem anderen Werkzeug gehören würde.

Call:

Die call Methode ermöglicht es dir, eine Funktion aufzurufen und ihr zu sagen, welches Objekt es als "this" verwenden soll. Das "this" ist wie ein Platzhalter für das Objekt, auf das die Funktion angewendet wird.

Schauen wir uns ein Beispiel an:

const person = {
  name: 'Max',
  greet: function() {
    return 'Hello, ' + this.name;
  }
};

const anotherPerson = {
  name: 'Anna'
};

console.log(person.greet.call(anotherPerson)); // Output: Hello, Anna

Hier haben wir die call Methode verwendet, um die greet Funktion von person aufzurufen, aber wir sagen ihr, dass sie das anotherPerson Objekt als "this" verwenden soll. So können wir die greet Funktion verwenden, als ob sie zu anotherPerson gehören würde.

Apply:

Die apply Methode funktioniert ähnlich wie call, aber anstatt einzelne Argumente zu übergeben, erwartet sie ein Array von Argumenten.

Schau dir dieses Beispiel an:

function introduce(greeting, farewell) {
  return greeting + ', my name is ' + this.name + '. ' + farewell;
}

const person = {
  name: 'Max'
};

const greetings = ['Hi', 'Goodbye'];

console.log(introduce.apply(person, greetings)); 
// Output: Hi, my name is Max. Goodbye

Hier haben wir die apply Methode verwendet, um die introduce Funktion aufzurufen und das this auf das person Objekt zu setzen. Die Argumente werden als Array übergeben.

Bind:

Die bind Methode erstellt eine neue Funktion und bindet das this dauerhaft an ein bestimmtes Objekt.

Hier ist ein Beispiel:

const person = {
  name: 'Max',
  greet: function() {
    return 'Hello, ' + this.name;
  }
};

const anotherPerson = {
  name: 'Anna'
};

const greetAnother = person.greet.bind(anotherPerson);

console.log(greetAnother()); // Output: Hello, Anna

Mit bind haben wir eine neue Funktion greetAnother erstellt, die immer das anotherPerson Objekt als this verwenden wird, unabhängig davon, wie sie aufgerufen wird.

Das sind die Grundlagen von call, apply und bind in JavaScript. Sie sind wie Werkzeuge in deinem Werkzeugkasten, die dir helfen, Funktionen auf verschiedene Weisen zu verwenden. Ich hoffe, diese Erklärung war hilfreich!