Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Problem z generowaniem wartości zmiennej w 'klasie' nadrzędnej
Master Pain
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


Witam

Mam obiekt oraz 3 'klasy' (zupełnie przykładowe, chodzi mi o prosty przykład):
  1. var Registry = {
  2. id: 0,
  3.  
  4. generujNoweId: function() {
  5. return ++this.id;
  6. }
  7. }
  8.  
  9. function Figura() {
  10. this.id = Registry.generujNoweId();
  11. this.nazwa = 'Figura';
  12. this.szerokosc = 0;
  13. this.wysokosc = 0;
  14.  
  15. this.pobierzId = function() {
  16. return this.id;
  17. }
  18.  
  19. this.pobierzNazwe = function() {
  20. return this.nazwa;
  21. }
  22. }
  23.  
  24. Prostokat.prototype = new Figura();
  25.  
  26. function Prostokat(szerokosc, wysokosc) {
  27. this.szerokosc = szerokosc;
  28. this.wysokosc = wysokosc;
  29. this.nazwa = 'Prostokat';
  30.  
  31. this.obliczPolePowierzchni = function() {
  32. return this.szerokosc*this.wysokosc;
  33. }
  34. }
  35.  
  36. Kwadrat.prototype = new Prostokat();
  37.  
  38. function Kwadrat(szerokosc) {
  39. this.szerokosc = szerokosc;
  40. this.wysokosc = szerokosc;
  41. this.nazwa = 'Kwadrat';
  42. }
  43.  
  44. var k1 = new Kwadrat(12);
  45. alert('Kwadrat 1 ID: ' + k1.id);
  46. //Spodziewane ID = 1 jest
  47.  
  48. var k2 = new Kwadrat(5);
  49. alert('Kwadrat 2 ID: ' + k2.id);
  50. //Spodziewane ID = 2; nie ma, jest 1
  51.  
  52. alert('Registry ID: ' + Registry.id);
  53. //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.

Ten post edytował Master Pain 21.02.2011, 15:17:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak. funkcja figura odpaliła się tylko raz przy przypisaniu prototypu (new Figura).
Do kwadratu przypisałeś obiekt Prostokat (który jako konstruktor ma "Figura"). Pewnie dlatego Kwadrat przejął ten konstruktor. Nie traktuj teraz moich słów jako pewnik. Dopiero całkiem niedawno zacząłem się uczyć dziedziczenia w JS.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 11:08