Heim > Web-Frontend > js-Tutorial > Hauptteil

Prototyp vs. konstruktordefinierte Methoden: Welche ist die beste für JavaScript?

Patricia Arquette
Freigeben: 2024-11-20 13:49:14
Original
150 Leute haben es durchsucht

Prototype vs. Constructor-Defined Methods: Which is Best for JavaScript?

Vorteile von Prototypen gegenüber konstruktordefinierten Methoden

Bei der Definition von Methoden in JavaScript können Entwickler wählen, ob sie diese als Prototypmethoden implementieren oder deklarieren möchten sie direkt im Konstruktor. Beide Ansätze haben ihre Vorteile:

Prototypdefinierte Methoden

  • Universelle Änderungen: Prototypmethoden können global für alle Instanzen von aktualisiert werden eine Klasse, während vom Konstruktor definierte Methoden Aktualisierungen für jede Instanz einzeln erfordern.
  • Verbessert Leistung:Prototypmethoden werden einmal erstellt und von allen Instanzen gemeinsam genutzt, wodurch die wiederholte Methodenerstellung reduziert wird.

Beispiel:

function Class() {}
Class.prototype.calc = function (a, b) {
  return a + b;
}

// Two instances share the same calc() method
var ins1 = new Class(),
    ins2 = new Class();
console.log(ins1.calc(1,1), ins2.calc(1,1)); // Outputs 2, 2

// Updating the prototype method affects both instances
Class.prototype.calc = function() {
  return Array.prototype.slice.apply(arguments).reduce((a, b) => a + b);
}
console.log(ins1.calc(1,1,1), ins2.calc(1,1,1)); // Outputs 3, 3
Nach dem Login kopieren

Jedoch Prototyp Methoden können nicht auf private Variablen zugreifen, die im Konstruktor definiert sind.

Konstruktordefiniert Methoden

  • Zugriff auf private Variablen: Im Konstruktor definierte öffentliche Methoden haben im Gegensatz zu Prototypmethoden Zugriff auf private Variablen.

Funktions- vs. Variablendeklaration für „Klasse“

Bezüglich der Wahl zwischen der Verwendung von Funktionsliteralen (z. B. var Class = function () {}) oder Funktionsdeklarationen (z. B. function Class () {}), letzteres wird bevorzugt, da es das „Höhen“ des Funktionsnamens an den Anfang des Gültigkeitsbereichs ermöglicht und so potenzielle Fehler vermeidet verursacht durch den Aufruf der Funktion, bevor sie definiert wurde.

Das obige ist der detaillierte Inhalt vonPrototyp vs. konstruktordefinierte Methoden: Welche ist die beste für JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage