Спадщина
Я використовую позначення для успадкування, яке базується на ExtJS 3 , який, на мою думку, працює досить близько до емуляції класичного успадкування в Java. В основному це працює наступним чином:
var Animal = Object.extend(Object, {
move : function() {alert('moving...');}
});
var Dog = Object.extend(Animal, {
bark : function() {alert('woof');}
});
var lassie = new Dog();
lassie.move();
lassie.bark();
Простори імен
Я також погоджуюсь з Еріком Міраглією щодо дотримання просторів імен, тому наведений вище код слід запускати у власному контексті поза об'єктом вікна, це критично важливо, якщо ви плануєте запустити свій код як одну з багатьох одночасних фреймворків / бібліотек, що виконуються у вікні браузера.
Це означає, що єдиний шлях до об’єкта вікна - через власний простір імен / об’єкт модуля:
window.MyModule = {};
(function() {
var Animal = window.MyModule.Animal = Object.extend(Object, {
move: function() {alert('moving...');}
});
})();
Інтерфейси
Ви також можете використовувати більше досягнень конструкцій ООП, таких як інтерфейси, щоб покращити дизайн вашого додатка. Мій підхід до них полягає в тому, щоб покращити Function.prototype
, щоб отримати позначення в таких напрямках:
var Dog = Object.extend(Animal, {
bark: function() {
alert('woof');
}
}).implement(Mammal, Carnivore);
ОО Шаблони
Що стосується "Шаблонів" у розумінні Java, я знайшов застосування лише для шаблону Singleton (чудово підходить для кешування) та шаблону Observer для керованих подіями функціональних можливостей, таких як призначення деяких дій, коли користувач натискає кнопку.
Прикладом використання шаблону спостерігача може бути:
var lassie = new Animal('Lassie');
lassie.on('eat', function(food) {
this.food += food;
});
$('#feeding-button').click(function() {
var food = prompt('How many food units should we give lassie?');
lassie.trigger('eat', [food]);
alert('Lassie has already eaten ' + lassie.food + ' units');
});
І це лише декілька хитрощів у моїй торбинці OO JS, сподіваюся, вони стануть вам у нагоді.
Якщо ви збираєтеся піти цією дорогою, я рекомендую вам прочитати Javascript Дугласа Крокфордса : Гарні частини . Це чудова книга для цього.