Heim >Web-Frontend >js-Tutorial >Tauchen Sie tief in Prototypen ein: Das Rückgrat von JavaScript
Prototypen sind ein Kernkonzept in JavaScript und bilden die Grundlage seiner objektorientierten Programmierfunktionen (OOP). Während andere Sprachen Klassen als Grundlage für die Vererbung verwenden, verlässt sich JavaScript auf Prototypen. In diesem Artikel werden wir Prototypen eingehend untersuchen und herausfinden, wie sie Vererbung, Objektverhalten und mehr in JavaScript steuern.
In JavaScript verfügt jedes Objekt über eine interne Eigenschaft namens [[Prototype]], die auf ein anderes Objekt verweist. Dies ist der Prototyp des Objekts und fungiert als Fallback-Mechanismus für Eigenschaften oder Methoden, die nicht direkt auf dem Objekt gefunden werden.
Die Prototypenkette besteht aus einer Reihe verknüpfter Prototypen. Wenn eine Eigenschaft oder Methode für ein Objekt nicht gefunden wird, durchsucht JavaScript die Kette, bis sie Null erreicht.
const parent = { greet: () => console.log("Hello from parent!") }; const child = Object.create(parent); child.greet(); // Output: "Hello from parent!" console.log(child.hasOwnProperty('greet')); // Output: false
Hier hat das Kind keine Begrüßungsmethode, daher sucht JavaScript die Prototypkette zum Elternteil und findet sie dort.
JavaScript bietet zwei verschiedene Begriffe im Zusammenhang mit Prototypen, die verwirrend sein können:
__proto__:
Prototyp:
Beispiel:
function Person(name) { this.name = name; } Person.prototype.sayHello = function () { console.log(`Hello, my name is ${this.name}`); }; const alice = new Person("Alice"); console.log(alice.__proto__ === Person.prototype); // true alice.sayHello(); // Output: "Hello, my name is Alice"
Die Vererbung von JavaScript basiert auf Prototypen, was bedeutet, dass Objekte direkt von anderen Objekten und nicht von Klassen erben.
Vererbung erstellen
const animal = { eat() { console.log("Eating..."); } }; const dog = Object.create(animal); dog.bark = function () { console.log("Barking..."); }; dog.eat(); // Output: "Eating..." dog.bark(); // Output: "Barking..."
Das Hundeobjekt erbt die Eat-Methode vom Tierobjekt.
Die Object.create-Methode erstellt ein neues Objekt mit einem angegebenen Prototyp. Es ist eine sauberere und intuitivere Möglichkeit, die Vererbung einzurichten.
Beispiel:
const person = { introduce() { console.log(`Hi, I'm ${this.name}`); } }; const student = Object.create(person); student.name = "John"; student.introduce(); // Output: "Hi, I'm John"
Obwohl die Erweiterung integrierter Prototypen wie Array oder Object möglich ist, wird davon im Allgemeinen abgeraten, da dies zu Konflikten führen kann.
Beispiel:
Array.prototype.last = function () { return this[this.length - 1]; }; console.log([1, 2, 3].last()); // Output: 3
Warum es vermeiden?
Mit ES6 führte JavaScript die Klassensyntax ein und sorgte so für ein vertrauteres OOP-Erlebnis. Unter der Haube verwenden Klassen jedoch immer noch Prototypen.
Beispiel:
const parent = { greet: () => console.log("Hello from parent!") }; const child = Object.create(parent); child.greet(); // Output: "Hello from parent!" console.log(child.hasOwnProperty('greet')); // Output: false
Auch bei Klasse erfolgt die Vererbung prototypbasiert.
Prototypbasierte Vererbung ist speichereffizienter, da Methoden von Instanzen gemeinsam genutzt und nicht dupliziert werden.
Beispiel:
function Person(name) { this.name = name; } Person.prototype.sayHello = function () { console.log(`Hello, my name is ${this.name}`); }; const alice = new Person("Alice"); console.log(alice.__proto__ === Person.prototype); // true alice.sayHello(); // Output: "Hello, my name is Alice"
Hier wird der Antrieb nicht für jedes Auto dupliziert; Stattdessen verwenden beide Instanzen dieselbe Methode.
Das Verständnis von Prototypen ist für die Beherrschung von JavaScript unerlässlich. Während ES6-Klassen die objektorientierte Programmierung in JavaScript zugänglicher gemacht haben, bleibt das Prototypsystem der Kern der Sprache. Indem Sie tief in Prototypen eintauchen, erschließen Sie die Möglichkeit, effizienten, skalierbaren und wartbaren Code zu schreiben.
Das obige ist der detaillierte Inhalt vonTauchen Sie tief in Prototypen ein: Das Rückgrat von JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!