Dziedzictwo
Używam notacji do dziedziczenia opartej na ExtJS 3 , który, moim zdaniem , działa bardzo podobnie do emulacji klasycznego dziedziczenia w Javie. Zasadniczo działa w następujący sposób:
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();
Przestrzenie nazw
Zgadzam się również z Erikiem Miraglia co do trzymania się przestrzeni nazw, więc powyższy kod powinien być uruchamiany w swoim własnym kontekście poza obiektem okna, jest to krytyczne, jeśli zamierzasz działać jako jeden z wielu współbieżnych frameworków / bibliotek wykonujących się w oknie przeglądarki.
Oznacza to, że jedyną drogą do obiektu okna jest własna przestrzeń nazw / obiekt modułu:
window.MyModule = {};
(function() {
var Animal = window.MyModule.Animal = Object.extend(Object, {
move: function() {alert('moving...');}
});
})();
Interfejsy
Możesz także skorzystać z większej liczby zaawansowanych konstrukcji OOP, takich jak interfejsy, aby ulepszyć projekt aplikacji. Moje podejście do tego polega na wzmocnieniu znaku Function.prototype
w celu uzyskania notacji w następujący sposób:
var Dog = Object.extend(Animal, {
bark: function() {
alert('woof');
}
}).implement(Mammal, Carnivore);
OO Patterns
Jeśli chodzi o `` wzorce '' w sensie Java, znalazłem zastosowanie tylko dla wzorca Singleton (świetnego do buforowania) i wzorca Observer do funkcji sterowanych zdarzeniami, takich jak przypisywanie niektórych akcji, gdy użytkownik kliknie przycisk.
Przykład wykorzystania wzorca obserwatora wyglądałby następująco:
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');
});
A to tylko kilka sztuczek w mojej torbie z OO JS, mam nadzieję, że ci się przydadzą.
Jeśli zamierzasz pójść tą drogą, polecam przeczytać Douglas Crockfords Javascript: The Good Parts . To świetna książka do tego wszystkiego.