„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erstellt das Definieren von Methoden über den Konstruktor in JavaScript doppelte Funktionskopien?

Erstellt das Definieren von Methoden über den Konstruktor in JavaScript doppelte Funktionskopien?

Veröffentlicht am 14.11.2024
Durchsuche:484

Does Defining Methods via Constructor in JavaScript Create Duplicate Function Copies?

Auswirkungen auf die Leistung der Definition von Methoden über Prototypen vs. Konstruktoren in JavaScript

In JavaScript gibt es zwei Ansätze zum Erstellen von „Klassen“ mit öffentlichen Funktionen: unter Verwendung des Prototyps oder des Konstruktors. Methode 1 weist Instanzen Funktionen über den Konstruktor zu, während Methode 2 den Prototyp verwendet, um Funktionen zwischen allen Instanzen zu teilen.

Während Methode 2 oft als effizienter behauptet wird, ist es ein erheblicher Nachteil, Instanzen private Instanzvariablen zu entziehen . Kommt es jedoch in der Praxis tatsächlich zu der offensichtlichen Erstellung doppelter Funktionskopien für jede Instanz durch Methode 1?

Empirische Evidenz aus dem JsPerf-Benchmark

JsPerf-Benchmarking legt nahe, dass Methode 2 (Prototyp ) übertrifft tatsächlich Methode 1 (Konstruktor) in Bezug auf die Geschwindigkeit.

Praktische Implikationen

Während dieser Unterschied in Benchmarks offensichtlich ist, ist seine Relevanz in realen Anwendungen fraglich . Selbst in Szenarien mit einer erheblichen Anzahl von Objektinstanziierungen (z. B. 10.000 pro Frame) ist es unwahrscheinlich, dass diese Mikrooptimierung Leistungsengpässe lindert.

Empfehlungen

Bei Optimierung Da die Leistung von entscheidender Bedeutung ist, empfiehlt es sich, Methoden über den Prototyp zu deklarieren. Ansonsten bietet Methode 1 mehr Flexibilität und hält sich an gängige objektorientierte Programmierkonventionen. Darüber hinaus verbessert die Verwendung privater Eigenschaften, die durch ein Unterstrich-Präfix gekennzeichnet sind (z. B. _process()), die Kapselung und verhindert direkte Änderungen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3