Miras
Java'da klasik kalıtımı taklit etmeye oldukça yakın işler bulduğum ExtJS 3'e dayalı bir kalıtım notasyonu kullanıyorum . Temel olarak şu şekilde çalışır:
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();
İsim alanları
Eric Miraglia ile ad alanlarına bağlı kalma konusunda da hemfikirim, böylece yukarıdaki kod pencere nesnesinin dışında kendi bağlamında çalıştırılmalıdır; kodunuzun tarayıcı penceresinde çalıştırılan birçok eşzamanlı çerçeveden / kitaplıktan biri olarak çalışmasını istiyorsanız bu kritik önem taşır.
Bu, pencere nesnesine giden tek yolun kendi ad alanınız / modül nesneniz olduğu anlamına gelir:
window.MyModule = {};
(function() {
var Animal = window.MyModule.Animal = Object.extend(Object, {
move: function() {alert('moving...');}
});
})();
Arayüzler
Ayrıca, uygulama tasarımınızı geliştirmek için arabirimler gibi daha gelişmiş OOP yapılarından da yararlanabilirsiniz. Benim bunlara yaklaşımım,Function.prototype
şu satırlar boyunca bir gösterim elde etmek için onu geliştirmek :
var Dog = Object.extend(Animal, {
bark: function() {
alert('woof');
}
}).implement(Mammal, Carnivore);
OO Kalıpları
Java anlamındaki 'Kalıplar'a gelince, yalnızca Tekil kalıbı (önbelleğe alma için harika) ve bir kullanıcı bir düğmeyi tıkladığında bazı eylemleri atamak gibi olay odaklı işlevsellik için Gözlemci kalıbı için kullanım buldum .
Gözlemci Modelini kullanmanın bir örneği şöyle olabilir:
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');
});
Ve bu, OO JS çantamdaki birkaç numara, umarım sizin için yararlıdır.
Bu yolda ilerlemek istiyorsanız Douglas Crockfords Javascript: the Good Parts'ı okumanızı tavsiye ederim . Bu şeyler için harika bir kitap.