MooTools cung cấp phương thức protect
về chức năng, vì vậy bạn có thể gọi bảo vệ theo bất kỳ phương pháp nào bạn muốn bảo vệ khỏi bị gọi bên ngoài Class
. Vì vậy, bạn có thể làm:
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.
Không phải là class
là từ khóa được đặt trước trong JavaScript và mã của bạn có thể bị hỏng khi sử dụng. Nó chắc chắn phá vỡ trên Safari vào thời điểm này, nhưng hành vi trong các trình duyệt khác không được đảm bảo là tốt, vì vậy tốt hơn hết là không sử dụng class
làm định danh.
Một ưu điểm của việc sử dụng protect
vì việc tự đóng cửa là nếu bạn mở rộng lớp này, bạn vẫn có thể truy cập các phương thức được bảo vệ trong các lớp con.
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.
Nếu bạn muốn sử dụng quy ước đặt tên như tiền tố hoặc hậu tố _
trước hoặc sau một phương pháp thì điều đó cũng hoàn toàn ổn. Hoặc bạn có thể kết hợp các _
với các phương pháp được bảo vệ.
Đây chính xác là những gì tôi đang tìm kiếm, cảm ơn rất nhiều! Tôi sẽ phải kiểm tra lại các tài liệu mootools lần sau. – aubreyrhodes