„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Beherrschen von JavaScript: Aufrufen, Anwenden und Binden verstehen.

Beherrschen von JavaScript: Aufrufen, Anwenden und Binden verstehen.

Veröffentlicht am 19.08.2024
Durchsuche:712

Mastering JavaScript: Understanding call, apply, and bind.

JavaScript ist eine vielseitige und leistungsstarke Programmiersprache, die das Rückgrat der modernen Webentwicklung bildet. Während Entwickler auf ihrer JavaScript-Reise fortschreiten, stoßen sie auf fortgeschrittenere Konzepte, die ihre Programmierfähigkeiten erheblich verbessern können. Zu diesen Konzepten gehören die Methoden call, apply und bind. Diese Methoden sind wesentliche Werkzeuge zum Bearbeiten des Ausführungskontexts von Funktionen und zum Verwalten des Schlüsselworts this. In diesem Artikel werden wir diese Methoden eingehend untersuchen, ihre Unterschiede verstehen und lernen, wie Sie sie effektiv in Ihren JavaScript-Projekten einsetzen können.

Funktionskontext verstehen (dies)

Bevor Sie sich mit „Aufrufen“, „Anwenden“ und „Binden“ befassen, ist es wichtig, das Konzept des Schlüsselworts „this“ in JavaScript zu verstehen.

Dies bezieht sich auf das Objekt, das die aktuelle Funktion ausführt. Der Wert davon hängt davon ab, wie die Funktion aufgerufen wird:

  • In einer Methode eines Objekts bezieht sich dies auf das Objekt.
  • In einer Funktion bezieht sich dies auf das globale Objekt (Fenster in Browsern).
  • In einem Ereignis bezieht sich dies auf das Element, das das Ereignis empfangen hat.
  • Im strikten Modus („use strict“;) ist dies in Funktionen undefiniert.

Es gibt jedoch Zeiten, in denen Sie den Wert hierfür manuell festlegen müssen. Hier kommen Call, Apply und Bind ins Spiel.

Die Aufrufmethode

Die Aufrufmethode wird verwendet, um eine Funktion mit einem bestimmten Wert und individuell bereitgestellten Argumenten aufzurufen. Dies ist besonders nützlich, wenn Sie eine Methode von einem anderen Objekt übernehmen oder den Kontext dynamisch festlegen möchten. Die Syntax lautet wie folgt:

function.call(thisArg, arg1, arg2, ...)

Hier ist ein Beispiel, um zu veranschaulichen, wie call() funktioniert:

const person = {
  fullName: function(city, country) {
    console.log(this.firstName   " "   this.lastName   " lives in "   city   ", "   country);
  }
};

const john = {
  firstName: "John",
  lastName: "Doe"
};

person.fullName.call(john, "New York", "USA");
// Output: John Doe lives in New York, USA

In diesem Beispiel verwenden wir call(), um die Funktion „fullName“ mit „john“ als diesem Wert aufzurufen, wodurch die Methode effektiv vom Personenobjekt übernommen wird.

Die apply-Methode

Die Methode apply() ähnelt call(), akzeptiert jedoch Argumente als Array. Seine Syntax ist:

function.apply(thisArg, [argsArray])

Nehmen wir ein Beispiel.

const person = {
  fullName: function(city, country) {
    console.log(this.firstName   " "   this.lastName   " lives in "   city   ", "   country);
  }
};

const john = {
  firstName: "John",
  lastName: "Doe"
};

person.fullName.apply(john, ["New York", "USA"]);
// Output: John Doe lives in New York, USA

Der Hauptunterschied zwischen call() und apply() besteht darin, wie sie mit Argumenten umgehen. call() erwartet, dass Argumente einzeln übergeben werden, während apply() sie in einem Array erwartet.

Die bind-Methode

Im Gegensatz zu call() und apply(), die die Funktion sofort aufrufen, erstellt bind() eine neue Funktion mit einem festen this-Wert. Dies ist besonders nützlich für die Erstellung von Funktionen, die später mit einem bestimmten Kontext aufgerufen werden können. Seine Syntax ist:

const boundFunction = function.bind(thisArg, arg1, arg2, ...)

Hier ist ein Beispiel dafür, wie bind() funktioniert:

const person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName   " "   this.lastName;
  }
};

const logName = function() {
  console.log(this.fullName());
};

const boundLogName = logName.bind(person);
boundLogName(); // Output: John Doe

In diesem Beispiel erstellen wir eine neue Funktion „boundLogName“, deren Wert „Person permanent gebunden“ ist.

Vergleich und Anwendungsfälle

  • call: Verwenden Sie diese Option, wenn Sie eine Funktion aufrufen und diesen Kontext sofort steuern müssen, indem Sie Argumente einzeln übergeben.
  • apply: Ähnlich wie call, aber verwenden Sie es, wenn Sie ein Array von Argumenten haben.
  • bind: Verwenden Sie diese Option, wenn Sie eine Funktion erstellen müssen, die später mit einem bestimmten Kontext aufgerufen werden kann.

Leistungsüberlegungen

Call, Apply und Bind sind zwar leistungsstarke Tools, es ist jedoch wichtig, ihre Auswirkungen auf die Leistung zu berücksichtigen. bind() ist im Allgemeinen langsamer als call() oder apply(), da es eine neue Funktion erstellt. Wenn Sie in leistungskritischen Abschnitten Ihres Codes arbeiten, möchten Sie möglicherweise call() oder apply() anstelle von bind() verwenden.

Best Practices und häufige Fallstricke

Beachten Sie bei der Verwendung von Call, Apply und Bind die folgenden Best Practices:

  • Machen Sie sich immer klar, worauf sich dies in Ihren Funktionen beziehen soll.
  • Verwenden Sie call() oder apply(), wenn Sie eine Funktion sofort mit einem bestimmten Wert aufrufen möchten.
  • Verwenden Sie bind(), wenn Sie eine neue Funktion mit einem festen Wert für diesen Wert für die spätere Verwendung erstellen möchten.
  • Seien Sie vorsichtig, wenn Sie diese Methoden mit Pfeilfunktionen verwenden, da Pfeilfunktionen eine lexikalische Bindung haben, die nicht geändert werden kann.

Eine häufige Gefahr besteht darin, zu vergessen, dass bind() eine neue Funktion zurückgibt. Stellen Sie sicher, dass Sie die gebundene Funktion entweder neu zuweisen oder direkt verwenden

Abschluss

Aufruf, Anwenden und Binden zu beherrschen ist ein wichtiger Schritt auf dem Weg zu einem kompetenten JavaScript-Entwickler. Diese Methoden bieten leistungsstarke Möglichkeiten zur Steuerung des Funktionsausführungskontexts und zur Verwaltung des Schlüsselworts this. Wenn Sie diese Tools verstehen und effektiv nutzen, können Sie flexibleren, wiederverwendbareren und wartbareren Code schreiben.

Bedenken Sie beim weiteren Erkunden von JavaScript, dass diese Konzepte nur die Spitze des Eisbergs sind. Die Sprache entwickelt sich ständig weiter und es ist von entscheidender Bedeutung, über die neuesten Funktionen und Best Practices auf dem Laufenden zu bleiben. Üben Sie die Verwendung von Call, Apply und Bind in Ihren Projekten, und Sie werden bald feststellen, dass Sie eleganteren und effizienteren JavaScript-Code schreiben.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/sagarj521/mastering-javascript-understanding-call-apply-and-bind-4ba5?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3