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

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: 7.10.2025 - 15:07