Heim >Web-Frontend >js-Tutorial >Wie können Sie private Methoden in JavaScript erstellen und welche Einschränkungen hat dieser Ansatz?
JavaScript, eine weit verbreitete Programmiersprache, bietet Entwicklern zahlreiche Funktionen zum Erstellen komplexer und effizienter Anwendungen. Ein Aspekt, der bei der objektorientierten Programmierung häufig auftritt, ist die Notwendigkeit privater Methoden, d. h. Methoden, auf die nur innerhalb der Klasse zugegriffen werden kann, in der sie definiert sind.
In JavaScript werden traditionelle Klassen nicht unterstützt, sondern JavaScript Objekte können verwendet werden, um eine ähnliche Funktionalität zu erreichen. Um öffentliche Methoden in JavaScript zu erstellen, definieren Sie diese normalerweise als Eigenschaften des Prototyps der Konstruktorfunktion. Betrachten wir zum Beispiel das folgende Beispiel:
<code class="javascript">function Restaurant() {} Restaurant.prototype.buy_food = function() { // Something here } Restaurant.prototype.use_restroom = function() { // Something here }</code>
Wie Sie sehen können, kann auf diese Methoden normal über „restaurant.buy_food()“ und „restaurant.use_restroom()“ zugegriffen und diese aufgerufen werden, wobei „restaurant“ eine Instanz von ist die Restaurant-Klasse.
Konzentrieren wir uns nun auf die Herausforderung, private Methoden in JavaScript zu erstellen. Private Methoden sind Methoden, auf die nur innerhalb derselben Klasse zugegriffen werden sollte. Mit anderen Worten, wir wollen eine Methode namens private_stuff definieren, die sowohl von buy_food als auch von use_restroom aufgerufen werden kann, aber nicht von Benutzern der Klasse.
Leider hilft es nicht, eine Methode einfach als Eigenschaft des Prototyps zu deklarieren. Ich mache es nicht privat. JavaScript verfügt nicht über eine integrierte Unterstützung für echte Kapselung, was bedeutet, dass auf jede Eigenschaft eines Objekts, einschließlich Methoden, von außen zugegriffen werden kann.
Es gibt jedoch eine Problemumgehung, mit der effektiv ein ähnliches Ergebnis erzielt werden kann. Mit den Funktionsabschlüssen von JavaScript können Sie einen privaten Bereich innerhalb einer Funktion erstellen, sodass innerhalb dieses Bereichs deklarierte Variablen außerhalb dieser Funktion nicht zugänglich sind.
Um mit diesem Ansatz eine private Methode zu erstellen, würden Sie die Methode innerhalb einer Funktion deklarieren, die wird von der Konstruktorfunktion aufgerufen. Beispiel:
<code class="javascript">function Restaurant() { var myPrivateVar; var private_stuff = function() { // Only visible inside Restaurant() myPrivateVar = "I can set this here!"; } this.use_restroom = function() { // use_restroom is visible to all private_stuff(); } this.buy_food = function() { // buy_food is visible to all private_stuff(); } }</code>
In diesem Fall wird die Funktion „private_stuff“ innerhalb der Konstruktorfunktion „Restaurant“ deklariert, was bedeutet, dass sie nur im Rahmen dieses Konstruktors zugänglich ist. Jetzt können sowohl buy_food als auch use_restroom private_stuff aufrufen, da sie über ihren gemeinsamen Bereich innerhalb des Konstruktors Zugriff darauf haben. Allerdings können externe Benutzer der Klasse private_stuff nicht aufrufen, da es im Prototyp nicht verfügbar ist.
Es ist wichtig zu beachten, dass dieser Ansatz eine Einschränkung aufweist: Private Methoden, die in einem Abschluss definiert sind, können nicht Teil des Klassenprototyps sein. Daher kann mit dem Schlüsselwort this innerhalb der Klasse nicht auf sie zugegriffen werden. Diese Einschränkung ist aufgrund der Funktionsweise der JavaScript-Abschlüsse unvermeidlich.
Das obige ist der detaillierte Inhalt vonWie können Sie private Methoden in JavaScript erstellen und welche Einschränkungen hat dieser Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!