MooTools proporciona un método protect
sobre las funciones, por lo que puede llamar al método Class
para proteger contra cualquier método que desee proteger. Por lo que puede hacer:
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.
No es que class
es un futuro palabra clave reservada en JavaScript y su código puede romper cuando se la usa. Ciertamente se rompe en Safari en este punto, pero el comportamiento en otros navegadores tampoco está garantizado, por lo que es mejor no usar class
como identificador.
Una ventaja del uso de protect
sobre la creación de cierres es que si extiende esta clase, puede acceder a los métodos protegidos en subclases.
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.
Si desea utilizar una convención de nombres tales como prefijo o sufijo _
antes o después de un método, entonces eso es perfectamente bien también. O puede combinar el _
con los métodos protegidos también.
Esto es exactamente lo que estaba buscando, ¡muchas gracias! Tendré que volver a verificar los documentos mootools la próxima vez. – aubreyrhodes