Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nadpisanie metody obiektu
duch4ever
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

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


Witam, załóżmy że mam ajkiś obiekt z metodami np:

  1. var koszyk = {
  2. dodaj : function(){ jakis kod },
  3. usun : function(){ jakis kod },
  4. zapisz : function(){ jakis kod }
  5. }


I chcę teraz nadpisać metodę "dodaj", można to jakoś zrobić? Chcę mieć obiekt jak wyżej tylko z innym kodem metody "dodaj". Nie jestem za dobry w tym. Pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Powinieneś korzystać z prototypu, zawsze, gdy tworzysz "obiekt-klasę":
[JAVASCRIPT] pobierz, plaintext
  1. ​var Koszyk = function() {};
  2. Koszyk.prototype.dodaj = function() {
  3. alert('Koszyk.dodaj');
  4. };
  5. Koszyk.prototype.usun = function() {
  6. alert('Koszyk.usun');
  7. };
  8.  
  9. var MojKoszyk = function() {};
  10. MojKoszyk.prototype = Koszyk.prototype;
  11. MojKoszyk.prototype.dodaj = function() {
  12. alert('MojKoszyk.dodaj');
  13. };
  14.  
  15. var k = new MojKoszyk();
  16. k.dodaj();
  17. k.usun();​
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
duch4ever
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

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


Dzięki za info, napewno skorzystam z tej rady jeszcze. Co do problemu, chodziło bardziej o edycje istniejącego obiektu bez edycji kodu fizycznie niż tworzenie czegoś nowego.
Okazało się że jest prosty sposób, utworzyłem nowy obiekt z jedną metodą którą chciałem zmienić i połączyłem stary obiekt z tym tymczasowym:

  1. var koszyk_ = {
  2. dodaj : function(){ jakis kod }
  3. }
  4.  
  5. for (var attrname in koszyk_) {koszyk[attrname] = koszyk_[attrname];}


Ten post edytował duch4ever 18.11.2012, 14:05:26
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jeżeli chodzi tylko o jeden obiekt, to w każdej chwili jesteś wstanie nadpisać każdą z jego właściwości/metod publicznych zwykłym:
[JAVASCRIPT] pobierz, plaintext
  1. obiekt.metoda = function() {
  2. /* ... */
  3. };
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
duch4ever
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

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


No właśnie tego nie wiedziałem. A co do prototype rozumiem że pozawala to tworzyć klasę i metody zamiast statycznych funkcji? Mogę później tworzyć instacje tej klasy i klasy dziedziczące o to chodzi tak?
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


O tym czym jest prototype można by niekrótki esej napisać, dlatego też: https://www.google.pl/search?q=javascript+o...me&ie=UTF-8

PS. Pamiętaj, że właściwość prototype obiektu, nie ma nic wspólnego z popularną biblioteką Prototype.
Go to the top of the page
+Quote Post
duch4ever
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 22.06.2010

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


Ok dzięki poczytam jeszcze o tym, temat można zamknąć. Pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 18:04