MooTools fornisce un metodo protect
sulle funzioni, quindi è possibile chiamare la protezione su qualsiasi metodo che si desidera proteggere dall'essere chiamato all'esterno dello Class
. Così si può fare:
var Notifier = new Class({
showMessage: function(message) {
},
setElementClass: function(klass) {
}.protect()
});
var notifier = new Notifier();
notifier.showMessage();
notifier.setElementClass();
> Uncaught Error: The method "setElementClass" cannot be called.
Non che class
è un futuro parola chiave riservata in JavaScript e il codice potrebbe rompersi quando lo si utilizza. Certamente a questo punto si interrompe su Safari, ma il comportamento in altri browser non è garantito, quindi è meglio non utilizzare lo class
come identificativo.
Un vantaggio dell'utilizzo di protect
rispetto alla creazione di chiusure è che se si estende questa classe, è ancora possibile accedere ai metodi protetti in sottoclassi.
Notifier.Email = new Class({
Extends: Notifier,
sendEmail: function(recipient, message) {
// can call the protected method from inside the extended class
this.setElementClass('someClass');
}
});
var emailNotifier = new Notifier.Email();
emailNotifier.sendEmail("a", "b");
emailNotofier.setElementClass("someClass");
> Uncaught Error: The method "setElementClass" cannot be called.
Se si desidera utilizzare una convenzione di denominazione come prefisso o suffisso _
prima o dopo un metodo, allora va perfettamente bene pure. Oppure puoi combinare lo _
con i metodi protetti.
Questo è esattamente quello che stavo cercando, grazie mille! Dovrò ricontrollare i documenti mootools la prossima volta. – aubreyrhodes