La semplice risposta è che non è possibile eseguire entrambi. È possibile creare metodi "private"
o metodi "static"
, ma non è possibile creare Funzioni statiche private come in altre lingue.
Il modo in cui è possibile emulare la privacy è chiusura:
function f() {
function inner(){}
return {
publicFn: function() {},
publicFn2: function() {}
}
}
qui a causa della chiusura, la funzione inner
verrà creato ogni volta che si chiama f
, e le funzioni pubbliche può acces questa funzione inner
, ma per il mondo esterno inner
sarà nascosto.
Il modo in cui si creano metodi statici di un oggetto è semplice:
function f() {}
f.staticVar = 5;
f.staticFn = function() {};
// or
f.prototype.staticFn = function() {};
Qui l'oggetto funzione f
avrà un solo staticFn
che ha accesso al statici variabili, ma nulla dalle istanze.
Si noti che la versione prototype
verrà ereditata mentre la prima non lo sarà.
Quindi, si crea un metodo privato che non accede a nessun elemento dalle istanze o si crea un metodo statico a cui non si tenta di accedere dall'esterno.
si desidera ** funzione statica o metodo statico **? vuoi che sia statico? (l'esempio non chiarisce) – galambalazs
qual è la differenza tra un metodo statico e una funzione? : S (mi spiace per l'utilizzo di entrambe le parole) – user