Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zorientowany obiektowo Javascript - konstruktor i dziedziczenie, javsacript, konstruktor, dziedziczenie
karop
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.03.2006

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


Witam,

Porwałem się z motyka na słońce mając jquery i code igniter u boku - piszę aplikację do gry w szachy przez przeglądarkę.

Jestem w fazie początkowej - bierki już mogą się ruszać po przeciągnięciu (prawie guitar.gif ). I tutaj bardzo przydałby mi się OOP JS, żeby mieć klasę rodzica z ogólnym konstruktorem wyznaczającym pozycję, generującym obrazek na planszy itd. Właściwie wszystkie klasy będą dziedziczyły to samo oprócz dozwolonych ruchów.

1. Jak stworzyć funkcję w klasie (w JS to oczywiście funkcja), która będzie miała rolę konstruktora w PHP?

2. Jak stworzyć relację "extends"?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mat-bi
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


http://kurs.browsehappy.pl/JavaScript/Klasy
http://kurs.browsehappy.pl/JavaScript/Dziedziczenie

Taa, nie wiedziałem, że wujek Google jest aż taaak nieprzyjazny...
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Details of the object model - tu w dokumentacji mozilli jest to dosyć w miarę opisane...

w js w zasadzie wszystko jest obiektem - nawet zwykła funkcja... i funkcja tutaj jest funkcją/metodą/konstruktorem/obiektem...

generalnie by parent konstruktora wywołać w kontekście this potomnej "klasy" to możesz albo funkcję rodzica przypisać do jakiejś zmiennej/metody w kontekście this po czym tą zmienną wykonać bądź skorzystać z podstawowych funkcji jak apply i call (poczytaj na dokumentacji mozilli)...

rozszerzenie najlepiej i najwydajniej robić przez utworzenie obiektu klasy rodzica w prototype klasy potomnej - często nie chce się od razu wywoływać konstruktora klasy rodzica do prototype i są na to różne tricki jak np. ten napisany z palca:
[JAVASCRIPT] pobierz, plaintext
  1. var fCloneProto; // funkcja do tworzenia obiektu z prototypu innych "konstruktorów"
  2. (function(_fClearConstructor){
  3. fCloneProto = function(constructor){
  4. _fClearConstructor.prototype = constructor.prototype;
  5. constructor = null;
  6. return new _fClearConstructor();
  7. };
  8. })(function(){}); // jakoś jak nie trzeba to nie piszę var tylko daję do argumentów funkcji ;p
  9.  
  10. var b = function(){};
  11. function c(){
  12. // a tak jeszcze jakby chcieć wywołać parenta lub inną funkcję w kontekście this
  13. b.call(this); //a o przekazywaniu argumentów to se doczytaj...
  14. };
  15. c.prototype = fCloneProto(b);
  16.  
  17. var d = new c;
  18. alert(d instanceof b);
[JAVASCRIPT] pobierz, plaintext


ogólnie musisz poeksperymentować by skumać czaczę ;] - ale js jest super prosty, fajne są domknięcia i wiele tricków - choć daaawno się już nim jakoś nie bawiłem

ps. w js musisz zrozumieć zasięg zmiennych - jeśli tego nie będziesz rozumiał i będziesz wstawiał gdzie popadnie definicję zmiennych przez var to nie uzyskasz kilku ciekawych efektów - ale z kolei jeśli w ogóle nie rozumiesz co się dzieje, to wstawiaj na początek gdzie popadnie definicję var gdyż inaczej sobie ponadpisujesz zmienne w globalnym scope a te nie zdefiniowane zdefiniujesz w globalnym scope czyli w obiekcie window...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
karop
post
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.03.2006

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


Dzięki chłopaki!

Dopiero teraz miałem chwilę, żeby na to spojrzeć.

zegarek84: trochę już w JS (bardziej w jQuery) pisałem, obczajam nieco temat (nie zabierał bym się za szachy:).

Sprawa z klasami jest pokopana w JS. Po kilku próbach doszedłem do tego jak tworzyć obiekt z danym zestawem zmiennych (to akurat nic trudnego...)

CODE
Object.prototype.parent = function (supClass,x,y) {
tempObj = new supClass(x,y);
for (property in tempObj) {
this[property] = tempObj[property];
}
};

function Bazowa(x,y) {

this.value = x;

this.metoda = function () {
return this.value;
}

}

function Pochodna(x,y) {
this.parent(Bazowa,x,y);

}

foo = new Pochodna(34,23);

alert(foo.metoda());
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: 20.08.2025 - 18:52