Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JS.Class biblioteka ułatwiająca tworzenie i rozszerzanie obiektów w JSie, http://code.google.com/p/jsclassextend/
deirathe
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


http://code.google.com/p/jsclassextend/

Mała biblioteka do tworzenia i rozszerzania obiektów w JSie. Prosta klasa:


  1. var Sample = JS.Class({
  2. test : function () {
  3. }
  4. });



rozszerzanie:
  1. var ExtendedSample = Sample.extend({
  2. test2 : function () {
  3. }
  4. });


instancja:

  1. var obj = new ExtendedSample();


więcej przykładów na googlecodzie, zapraszam do komentów (IMG:style_emoticons/default/smile.gif)

Ten post edytował deirathe 11.01.2011, 22:34:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
deirathe
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


Nie wiem czy patrzyłeś może w kod który tam leży na googl'u. Twój pomysł mi się mega podoba, ale nie mam koncepcji na chwilę obecną jak tego dokonać (IMG:style_emoticons/default/biggrin.gif) tak żeby instanceof działał jak należy (IMG:style_emoticons/default/smile.gif)

[JAVASCRIPT] pobierz, plaintext
  1. var Test = JS.Class({
  2. a : function() {console.log('3');}
  3. });
  4.  
  5. var eTest = Test.extend({
  6. a : function() {console.log('5');}
  7. });
  8.  
  9. var v = new eTest();
  10. v.a();
[JAVASCRIPT] pobierz, plaintext


To to samo co w php
  1. class Test
  2. {
  3. public function a () { echo "3";}
  4. }
  5. class eTest extends Test
  6. {
  7. public function a () { echo "5";}
  8. }
  9.  
  10. $v = new eTest();
  11.  
  12. $v->a();


Cytat(zegarek84 @ 12.01.2011, 01:43:41 ) *
ps.
jeszcze teraz przyszło mi do głowy coś takiego, że można by jeszcze dorobić np. obsługe abstrakcyjnych metod... a można by to zrobić np. w ten deseń, że np. definiujesz zmienną window.abstract = {} (lub tablica [] lub anonimowa funkcja - nie ważne)... dalej jeszcze tą zmienną sobie zbuforujesz gdzie trzeba - ale mając taką zmienną w window można pisać np. {g: abstract} - a potem w konstruktorze lub na extend strawdzasz czy zmienna !== abstract (jeśli będzie false to trzeba wyrzucić jakiś wyjątek informujący o braku implementacji metody o nazwie...)... z kolei klasy abstrakcyjne mógłbyś utworzyć w taki sposób, że w konstruktor daje się funkcję itterująca po własnych metodach i sprawdzającą czy czasem zmienna nie równa się abstract i wyrzucić wyjątek jeśli komuś przyjdzie do głowy tworzenie obiektu z takiej klasy

oczywiście nazwa abstract jest raczej zarezerwowana [czy jak się to zwie...]

pozdro (IMG:style_emoticons/default/winksmiley.jpg)


Abstract będzie dużo łatwiejsze, można to zrobić tak jak ze static'iem:

[JAVASCRIPT] pobierz, plaintext
  1. var Test = JS.Class({
  2. abstract : {
  3. properties : ['propA','propB'],
  4. methods: ['methodA','methodB']
  5. }
  6. });
[JAVASCRIPT] pobierz, plaintext



Ten post edytował deirathe 12.01.2011, 01:59:38
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%)
-----


do samych źródeł nie zaglądałem - trochu nie mam czasu - tylko na przykłady...

Cytat(deirathe @ 12.01.2011, 02:04:38 ) *
...To to samo co w php...

właśnie dlatego się pytałem w którą stronę jest tutaj dziedziczenie gdyż z samej konstrukcji js nie wiedziałem (IMG:style_emoticons/default/winksmiley.jpg) - fakt faktem sam mogłem sprawdzić pisząc coś na wzór:
[JAVASCRIPT] pobierz, plaintext
  1. var TestClass = JS.Class({
  2. construct : function () {
  3. this.iA = 2;
  4. }
  5. });
  6.  
  7. var ExtendedTestClass = TestClass.extend({
  8. construct : function () {
  9. this.iA = 3;
  10. },
  11. fAlert: function(){alert(this.iA);}
  12. });
  13.  
  14. var oTest = new ExtendedTestClass;
  15. oTest.fAlert();
[JAVASCRIPT] pobierz, plaintext

tyle, że jak już wcześniej wspominałem skoro w extend jest szkielet klasy to tutaj ta nazwa jakoś mi nie pasuje...

pozdro... widzę, iż wiesz co gdzie i to dosyć dobrze napisałeś choć jeszcze można to dopracować by nie było niejasności (IMG:style_emoticons/default/winksmiley.jpg)
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: 11.10.2025 - 11:49