JavaScript Objektmethoden, "this"

In JavaScript werden Objekte erstellt, um reale Entitäten darzustellen, wie z.B. Bestellungen, Benutzer und mehr. Hier ein Beispiel:

Javascript objects
let site = { name: "W3Docs", }; console.log(site);

In der realen Welt agieren Sie so: Anmeldung, Ausloggen, Auswahl von etwas aus einem Einkaufswagen und mehr.

In JavaScript können Sie Handlungen durch Funktionen in Eigenschaften darstellen.

Beispiele für Methoden

Ihr erster Schritt beim Studium der JavaScript-Objektmethoden sollte sein, zu lernen, wie Sie “Willkommen sagen”. Das Beispiel sieht folgendermaßen aus:

Javascript object methods
let site = { name: "W3Docs", }; site.welcome = function () { console.log("Welcome to W3Docs!"); }; site.welcome(); // Welcome to W3Docs!
Hier wird ein Funktionsausdruck verwendet, um eine bestimmte Funktion zu erstellen und diese der site.welcome-Eigenschaft des Objekts zuzuweisen.

Die Seite kann also erst nach einem Aufruf reagieren.

Eine bestimmte Funktion, die eine Eigenschaft eines Objekts ist, wird als Methode bezeichnet. Im oben gegebenen Beispiel ist welcome eine Methode des Objekts site.

Darüber hinaus kann eine vorher deklarierte Funktion als Methode verwendet werden. Dafür müssen Sie den folgenden Befehl aufrufen:

Javascript object methods
let site = { name: "W3Docs", }; site.welcome = function () { console.log("Welcome to W3Docs!"); }; site.welcome(); // Welcome to W3Docs!

Beschreibung der objektorientierten Programmierung

Objektorientierte Programmierung (kurz “OOP”) zielt darauf ab, Codes mit Hilfe von Objekten zur Darstellung von Entitäten zu schreiben.

OOP kann als Wissenschaft für sich betrachtet werden. Es wurden zahlreiche Untersuchungen durchgeführt, um vollständig zu erforschen, wie man die richtigen Entitäten auswählt, wie man die Verbindungen zwischen ihnen organisiert und vieles mehr. Das ist eine ganz neue Architektur.

Kurzschrift der Methode

Sie können eine kurze Syntax für Methoden in einem Objekt wie folgt verwenden:

Javascript objects methods
// method shorthand let site = { welcome() { console.log("Welcome to W3Docs"); } }; site.welcome();

In diesem Beispiel können Sie sehen, dass das Wort “funktion” weggelassen wird und es nur welcome geschrieben steht. Natürlich kann es Unterschiede geben, die mit Objektvererbung verknüpft sind. In den meisten Fällen wird jedoch eine kürzere Syntax bevorzugt.

“this” in Objektmethoden

Normalerweise muss eine Objektmethode, um ihre Aufgabe zu erfüllen, die im Objekt gespeicherten Informationen haben.

Zum Beispiel könnte der Code, der in site.welcome() steckt, das site.name. benötigen.

Eine Methode kann das Schlüsselwort “this” verwenden, um auf das Objekt zuzugreifen.

Das Objekt “vor dem Punkt” sollte der Wert von “this” sein.

Zum Beispiel können Sie die Methode wie folgt aufrufen:

Javascript objects call the method
let site = { name: "W3Docs", welcome() { // "this" is the "current object" console.log(this.name); } }; site.welcome(); // W3Docs

Im oben gegebenen Beispiel ist beim Ausführen von site.welcome(), site der Wert von “this”.

Sie haben die Möglichkeit, auf das Objekt zuzugreifen, ohne “this” zu verwenden. Verweisen Sie einfach darauf über die äußere Variable wie folgt:

Javascript "this"
let site = { name: "W3Docs", welcome() { console.log(site.name); // "site" instead of "this" } }; site.welcome();

Aber bedenken Sie, dass solche Codes nicht verlässlich sein können. Im Falle des Kopierens von site in eine andere Variable (zum Beispiel anotherSite = site) Überschreiben von site mit etwas anderem, werden Sie zu einem falschen Objekt geleitet.

Hier ist ein Beispiel:

Javascript overwrite object with another thing
let site = { name: "W3Docs", welcome() { console.log(site.name); // leads to an error } }; let anotherSite = site; site = null; // overwrite to make things obvious anotherSite.welcome(); // Whoops! inside welcome(), the old name is used! error!

“this” kann Ungebunden sein

Üblicherweise kann das JavaScript-Schlüsselwort “this” in jeder Funktion verwendet werden, im Gegensatz zu anderen Programmiersprachen.

Das folgende Beispiel hat keine Syntaxfehler:

function welcome() {
  console.log(this.name);
}

Im folgenden Beispiel wird die gleiche Funktion zwei verschiedenen Objekten zugewiesen, und es enthält unterschiedliche spezifische “this” in den Aufrufen:

Javascript distinctive "this"
let site = { name: "W3Docs" }; let anotherSite = { name: "anotherSite" }; function welcome() { console.log(this.name); } // use the same function in two objects site.func = welcome; anotherSite.func = welcome; // these calls have different this // "this" inside the function is the object "before the dot" site.func(); // W3Docs (this == site) anotherSite.func(); // anotherSite (this == anotherSite) anotherSite['func'](); // anotherSite (dot or square brackets access the method – doesn't matter)

Also, einfache Schritte werden hier verwendet: Wenn Sie zuerst obj.func() aufrufen, dann müssen Sie this als obj während des Aufrufs von func ausführen. Das bedeutet, dass im oben angegebenen Beispiel entweder site oder anotherSite verwendet wird.

Aufrufen ohne ein Objekt: this == undefined

Die Funktion kann sogar ohne ein Objekt wie folgt aufgerufen werden:

Javascript "this"
function welcome() { console.log(this); } welcome();

In dem oben genannten Beispiel ist this im strikten Modus undefined. Im Falle eines Versuchs, this.name einzugeben, kann ein Fehler auftreten.

Der Wert von “this” in einem nicht strikten Modus wird das globale Objekt sein.

Normalerweise kann ein Anruf wie dieser einen Programmierfehler verursachen. Falls es ein this in der Funktion gibt, sollte es im Objektkontext aufgerufen werden.

Ergebnisse von Ungebundenem “this”

Wenn Sie bereits mit einer anderen Programmiersprache vertraut sind, kennen Sie vielleicht die Vorstellung von “gebundenem this”, bei dem Methoden, die in einem Objekt charakterisiert sind, immer “this” erhalten, das auf das Objekt verweist.

“this” kann in JavaScript als frei beschrieben werden. Daher hängt sein Wert nicht davon ab, wo die Methode bestätigt wurde. Aber es hängt mehr vom “vor dem Punkt”-Objekt ab.

Das gegebene Konzept von “this” hat sowohl Vor- als auch Nachteile. Einerseits können Sie die Funktion für eine Vielzahl von Objekten verwenden. Andererseits, je mehr Flexibilität, desto mehr Fehlerchancen. Ihr Ziel sollte es sein, zu lernen, wie man damit arbeitet, um Vorteile zu erzielen und Fehler zu vermeiden.

Pfeilfunktionen haben kein “this”

Pfeilfunktionen sind einzigartig, da sie nicht ihr eigenes “this” haben. Falls Sie es von einer solchen Funktion beginnen zu referenzieren, wird es von einer äußeren “normalen” Funktion genommen.

Im folgenden Beispiel verwendet arrow() this von der Methode: site.welcome().

Javascript "this" in arrow functions
let site = { name: "W3Docs", welcome() { let arrow = () => console.log(this.name); arrow(); } }; site.welcome(); // W3Docs

Die spezielle Methode der Pfeilfunktion ist besonders nützlich, wenn Sie kein separates “this” haben wollen, sondern es von einem Kontext darüber nehmen möchten.

Quizzeit: Testen Sie Ihre Fähigkeiten!

Sind Sie bereit, das Gelernte herauszufordern? Tauchen Sie ein in unsere interaktiven Quizze für ein tieferes Verständnis und eine unterhaltsame Art, Ihr Wissen zu festigen.

Finden Sie das nützlich?