Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisanie metody obiektu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
duch4ever
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!
Crozin
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
duch4ever
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];}
Crozin
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
duch4ever
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?
Crozin
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.
duch4ever
Ok dzięki poczytam jeszcze o tym, temat można zamknąć. Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.