Private statische Funktionen in Javascript

8

Wie kann ich eine Funktion erstellen, die von außen nicht aufgerufen werden kann?

%Vor%     
user 10.07.2010, 11:06
quelle

6 Antworten

19

Vielleicht möchten Sie das Yahoo-Modulmuster verwenden. Dies ist ein Singleton-Muster, und die Methoden sind nicht wirklich statisch, aber es könnte sein, wonach Sie suchen:

%Vor%

Sie definieren Ihre privaten Mitglieder, wobei myPrivateVar und myPrivateMethod definiert sind, und Ihre öffentlichen Mitglieder, für die myPublicVar und myPublicMethod definiert sind.

Sie können einfach wie folgt auf die öffentlichen Methoden und Eigenschaften zugreifen:

%Vor%     
Daniel Vassallo 10.07.2010, 11:09
quelle
7

Die einfache Antwort lautet: Sie können nicht beide . Sie können "private" Methoden oder "static" Methoden erstellen, aber Sie können Private statische Funktionen nicht wie in anderen Sprachen erstellen.

Die Art und Weise, wie Sie die Privatsphäre emulieren können, ist closing :

%Vor%

Hier wird wegen closing die Funktion inner jedes Mal erstellt, wenn Sie f aufrufen, und die öffentlichen Funktionen können diese inner Funktion aufrufen, aber für die Außenwelt inner wird versteckt sein.

Die Art, wie Sie statische Methoden eines Objekts erstellen, ist einfach:

%Vor%

Hier wird das Funktionsobjekt f nur ein staticFn haben, das Zugriff auf statische Variablen hat, aber nichts von den Instanzen .

Bitte beachten Sie, dass die prototype Version vererbt wird, während die erste nicht wird.

Sie erstellen entweder eine private Methode, die nicht auf die Instanzen zugreift, oder Sie erstellen eine statische Methode, auf die Sie nicht von außen zugreifen möchten.

    
galambalazs 10.07.2010 11:13
quelle
3

Sie können eine Schließung verwenden, etwas in der Art von ....

%Vor%

Dann:

obj.method2 ist verfügbar, aber obj.method1 existiert nicht zur öffentlichen Verwendung. Es kann nur mit Member-Funktionen der Klasse zugegriffen werden.

    
James Gaunt 10.07.2010 11:13
quelle
1
  

Objekte können durch Konstruktoren erzeugt werden, bei denen es sich um Funktionen handelt, die Objekte initialisieren. Konstruktoren bieten die Funktionen, die Klassen in anderen Sprachen bereitstellen, einschließlich statischer Variablen und Methoden.

Lesen Sie alles über Ссылка

    
Gaby aka G. Petrioli 10.07.2010 11:16
quelle
1

Du kannst es so machen:

%Vor%

Beachten Sie, dass ich auch einen anonymen Konstruktor verwende. Dies ist eine Art Analogie zum Singleton-Muster.

    
grm 10.07.2010 11:24
quelle
1

Vielleicht möchten Sie ein Proxy-Objekt, das nur die öffentlichen Methoden enthält, z. B.

%Vor%

Ich sehe den Punkt der privaten Methoden in Javascript nicht. Wenn Sie nicht möchten, dass Leute eine Methode aufrufen, werben Sie sie nicht an. Private Methoden machen das Debuggen auch etwas schwieriger.

    
Sean Hogan 10.07.2010 12:06
quelle

Tags und Links