Mam obiekt oraz 3 'klasy' (zupełnie przykładowe, chodzi mi o prosty przykład):
var Registry = { id: 0, generujNoweId: function() { return ++this.id; } } function Figura() { this.id = Registry.generujNoweId(); this.nazwa = 'Figura'; this.szerokosc = 0; this.wysokosc = 0; this.pobierzId = function() { return this.id; } this.pobierzNazwe = function() { return this.nazwa; } } Prostokat.prototype = new Figura(); function Prostokat(szerokosc, wysokosc) { this.szerokosc = szerokosc; this.wysokosc = wysokosc; this.nazwa = 'Prostokat'; this.obliczPolePowierzchni = function() { return this.szerokosc*this.wysokosc; } } Kwadrat.prototype = new Prostokat(); function Kwadrat(szerokosc) { this.szerokosc = szerokosc; this.wysokosc = szerokosc; this.nazwa = 'Kwadrat'; } var k1 = new Kwadrat(12); alert('Kwadrat 1 ID: ' + k1.id); //Spodziewane ID = 1 jest var k2 = new Kwadrat(5); alert('Kwadrat 2 ID: ' + k2.id); //Spodziewane ID = 2; nie ma, jest 1 alert('Registry ID: ' + Registry.id); //Spodziewane ID = 2; nie ma, jest 1
Tak jak w komentarzach przy alertach - nie generuje mi spodziewanych wartości ID.
Wiem, że chodzi o jakiś inny sposób dziedziczenia. Nie wiem tylko jak to zrobić, żeby poprawnie generowało nowe ID za każdym razem, kiedy tworzę nowy obiekt Kwadrat.