Heim  >  Artikel  >  Web-Frontend  >  Beherrschen von JavaScript: Aufrufen, Anwenden und Binden verstehen.

Beherrschen von JavaScript: Aufrufen, Anwenden und Binden verstehen.

WBOY
WBOYOriginal
2024-08-13 14:32:321072Durchsuche

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 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 manuell festlegen müssen. Hier kommen „Anrufen“, „Bewerben“ und „Binden“ 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 wir die Methode effektiv vom Objekt „person“ übernehmen.

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 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

  • Aufruf: Verwenden Sie diese Option, wenn Sie eine Funktion aufrufen und diesen Kontext sofort steuern müssen, indem Sie Argumente einzeln übergeben.
  • Anwenden: Ähnlich wie „call“, aber verwenden Sie es, wenn Sie eine Reihe 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

Aufrufen, Anwenden und Binden sind zwar leistungsstarke Werkzeuge, 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.

Das obige ist der detaillierte Inhalt vonBeherrschen von JavaScript: Aufrufen, Anwenden und Binden verstehen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn