Heim >Web-Frontend >js-Tutorial >JavaScript-Prototypen erweitern oder überschreiben: Welcher Ansatz ist der beste?
Definieren eines JavaScript-Prototyps: Die Unterschiede verstehen
Das Definieren von Objektprototypen in JavaScript ist für die Vererbung und Wiederverwendbarkeit von Code von entscheidender Bedeutung. Es gibt jedoch zwei gängige Ansätze zur Prototypendefinition: den vorhandenen Prototyp erweitern oder ihn vollständig überschreiben.
Option 1: Den vorhandenen Prototyp erweitern
Person.prototype.sayName = function(name) { alert(name); }
Dieser Ansatz erweitert das aktuelle Prototypobjekt Person.prototype um eine neue Methode sayName. Vorhandene Instanzen von Person erben diese neue Methode.
Option 2: Überschreiben des Prototyps
Person.prototype = { sayName: function(name) { alert(name); } }
Im Gegensatz zu Option 1 weist dieser Ansatz Person ein neues Prototypobjekt zu .prototype, wobei das Original überschrieben wird. Nur zukünftige Instanzen von Person erben die Methode sayName.
Funktionelle Unterschiede und Vorteile
Der primäre funktionale Unterschied besteht darin, dass Option 1 vorhandenen Instanzen den Zugriff auf die neue Methode ermöglicht. während Option 2 nur zukünftige Instanzen betrifft.
Ein weiterer Unterschied besteht darin, dass Sie durch das Überschreiben des Prototyps (Option 2). Verwerfen Sie versehentlich alle anderen Eigenschaften oder Methoden, die zuvor im ursprünglichen Prototyp definiert wurden. Obwohl diese normalerweise nur die Eigenschaft „Konstruktor“ umfassen, ist dieser potenzielle Nachteil zu beachten.
Empfehlung
Option 1 (Erweitern) wird im Allgemeinen als prägnanter und robuster angesehen, da sie gewährleistet dass alle Instanzen von Person auf sayName zugreifen können. Vermeiden Sie Option 2, es sei denn, Sie müssen den Prototyp aus bestimmten Gründen neu initialisieren.
Alternativer Ansatz
Wenn Ihnen die Objektliteralsyntax von Option 2 gefällt, sollten Sie die Verwendung von Object in Betracht ziehen. zuweisen, um den vorhandenen Prototyp zu erweitern:
Object.assign(Person.prototype, { sayName: function(name) { alert(name); } });
Das obige ist der detaillierte Inhalt vonJavaScript-Prototypen erweitern oder überschreiben: Welcher Ansatz ist der beste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!