MooTools предоставляет метод protect
для функций, так что вы можете вызывать protect для любого метода, который вы хотите защитить от вызова вне Class
. Так что вы можете сделать:
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.
Не то, чтобы class
было будущим зарезервированным ключевым словом в JavaScript, и ваш код может сломаться при его использовании. В этот момент он, конечно, ломается в Safari, но поведение в других браузерах также не гарантируется, поэтому лучше вообще не использовать class
в качестве идентификатора.
Одним из преимуществ использования protect
перед созданием замыканий является то, что если вы расширяете этот класс, вы все равно сможете получить доступ к защищенным методам в подклассах.
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.
Если вы хотите использовать соглашение об именах, такое как префикс или суффикс _
до или после метода, то это также прекрасно. Или вы можете комбинировать _
с защищенными методами тоже.