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
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
Jedoch Prototyp Methoden können nicht auf private Variablen zugreifen, die im Konstruktor definiert sind.
Konstruktordefiniert Methoden
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!