ı Oyuncu nesnesi var diyelim: O inşaat büyükJS Prototip Kalıtım: Childs aynı ebeveyn özelliklerini kullanıyor mu?
var player = function(name) {
this.handlers = {};
}
player.prototype.on = function(event, callback) {
if (!this.handlers[event]) {
this.handlers[event] = [];
}
this.handlers[event].push(callback);
}
, ben oyuncuları oluşturabilir ve her işleyicileri kendi kümesine sahip olacaktır. Şimdi player
devralan gerekir varsayalım:
var testPlayer = function(name) {
this.name = name;
};
testPlayer.prototype = new player();
Şimdi testPlayer
'ler oluştururken, bunların her biri aynı handlers
özelliği paylaşmaktadır:
var adam = new testPlayer('Adam');
adam.on('test', function(){});
var eve = new testPlayer('Eve');
// eve.handlers == {'test':<function>}
Burada ne eksik? Anladığım kadarıyla her testPlayer
modelinin prototipi, çocuk sınıfını tanımlarken oluşturduğum new player
nesnesi. Ancak tüm testPlayers'ın kendi işleyicileri için bir yolu var mı?
+1, bu en kullanışlı gibi görünüyor. –
Katılıyorum, bu tamamen geçerli bir programlama paradigması. Sinir bozucu kısım, "handlers" kullanan her yönteme böyle bir kontrol eklemeniz gerektiğidir. – MaxArt
Yapıcıdan tek bir 'init 'yöntemi çağrılabilir ve oradan da yapabilirsiniz. Bu, yalnızca bir nesnenin (veya dizinin) özelliklerini prototip üzerinde değiştiriyorsanız bir sorun olduğunu unutmayın. Prototipte yaşayan özelliklere atamayı denerseniz, otomatik olarak bir yerel gölgeleme özelliği oluşturulur (örneklerden prototip özelliklerine atayamazsınız). – bfavaretto