[ Pobierz całość w formacie PDF ]
.Wiêcej informacjio tym protokole mo¿na znaleŸæ w ramce dalej w tym rozdziale.Mamy do czynienia z anonimow¹ stron¹ HTML.Tê technikê nazywam oszukanymatrybutem SRC.W dalszej czêœci rozdzia³u skorzystamy jeszcze z tej techniki.Obiekty tworzy siê przez okreœlenie najpierw funkcji konstruktora, choæbytakiego:function mojPierwszyKonstruktor(arg1, arg2, argn) {this.wlasciwosc1 = arg1;this.wlasciwosc2 = arg2;this.wlasciwoscn = argn;return this;}Wygl¹da to podobnie jak ka¿da inna funkcja, tyle tylko, ¿e w celu odwo³ania siêdo samego siebie obiekt u¿ywa s³owa kluczowego this.Wszelkie przekazaneargumenty mog¹ zostaæ przypisane w³aœciwoœciom lub byæ przetwarzane inaczej.Kiedy ju¿ mamy konstruktor, nowe obiekty tworzymy stosuj¹c operator new:var mojPierwszyObiekt= new mojPierwszyKonstruktor(6, a*b, "Jimmy");var mojDrugiObiekt= new mojPierwszyKonstruktor(6, a*b, "Jimmy");var mojTrzeciObiekt= new mojPierwszyKonstruktor(6, a*b, "Jimmy");W przypadku naszego skryptu implementacja obiektów jest faktycznie taka prosta.Obiekty tworzy funkcja-konstruktor question(), przy czym maj¹ one tylkow³aœciwoœci.W wierszach 2–8 pokazano siedem w³aœciwoœci ka¿dego pytania:odpowiedŸ, wyjaœnienie, samo pytanie (tekst) oraz cztery mo¿liwe odpowiedzi –a, b, c i d.Oto wiersze od 1 do 10:function question(answer, support, question, a, b, c, d) {this.answer = answer;this.support = support;this.question = question;this.a = a;this.b = b;this.c = c;this.d = d;return this;}W³aœciwoœci i metody przypisywane s¹ obiektowi przy u¿yciu takiej w³aœnienotacji.Wobec tego ka¿dy element units za pomoc¹ operatora new tworzy nowyobiekt question(), przekazuj¹c mu siedem parametrów, które bêd¹ jegow³aœciwoœciami.W wierszu 9 mamy zapis:return this;Oznacza to zwrócenie wskazania na zmienn¹ (w naszym wypadku ka¿dy z elementówunits), co mo¿na porównaæ z przypieczêtowaniem jakiegoœ postanowienia.Terazka¿dy element units jest pytaniem, question.Stanowi to wygodny sposóbtworzenia, usuwania i innego typu obs³ugi pytañ testu.Nowe pytania mo¿natworzyæ, stosuj¹c tê sam¹ sk³adniê, co w przypadku elementów units:new question("litera_odpowiedzi", "objaœnienie", "treœæ pytania","opcja a", "opcja b", "opcja c", "opcja d");Jeœli ktoœ zastanawia siê, dlaczego odpowiedŸ jest pierwsz¹ pozycj¹, topowinien wiedzieæ, ¿e po prostu ³atwiej jest umieœciæ napis sk³adaj¹cy siêz jednej litery na pocz¹tku listy argumentów, ni¿ na koñcu.Niektóre pytania s¹przecie¿ dosyæ d³ugie, wiêc przy zaproponowanym uk³adzie ³atwiej bêdzie coœznaleŸæ i poprawiæ.Tworzenie obiektu pytania dla ka¿dego z nich mo¿e wydawaæ siê zbyteczne, aleznacznie u³atwia to dalsze dzia³anie, szczególnie kiedy przyjdzie nam dalejpracowaæ z danymi w³aœciwoœci poszczególnych pytañ.Zajmiemy siê tym, kiedyzbadamy jeszcze plik administer.html.Jeœli w swoich aplikacjach nie u¿ywasz obiektów JavaScriptu, warto zastanowiæsiê nad zmian¹ stylu pisania.Obiekty maj¹ wiele zalet.Dziêki nim kod bêdzieelegantszy i ³atwiejszy w utrzymaniu.Poza tym obiekty umo¿liwiaj¹dziedziczenie, czyli przenoszenie metod z obiektu pierwotnego do obiektubudowanego na jego bazie.Mo¿na œci¹gn¹æ plik PDF lub przeczytaæ dokumentacjêo JavaScripcie i dziedziczeniu obiektów w Sieci pod adresemhttp://developer.netscape.com:80/docs/manuals/communicator/jsobj/contents.htm.administer.htmlTeraz mamy ju¿ obiekty, zacznijmy wiêc ich u¿ywaæ.Jest to kolejna aplikacja,w której ca³y mechanizm JavaScriptu rezyduje w górnej ramce, a dolna ramkas³u¿y jako okno interakcji.Mo¿na rozbiæ aplikacjê na szereg operacji.Zestawiono je w tabeli 2.1 oraz opisano, jak równie¿ podano zwi¹zane z nimizmienne i funkcje JavaScriptu.Tabela 2.1.Operacje testu i zwi¹zane z nimi funkcje JavaScriptuOperacjaOpisElementy JavaScriptuPrzygotowanie œrodowiskaDeklarowanie i inicjalizacja zmiennych globalnych, przemieszanie zestawówpytanie–odpowiedŸ.Zmienne: qIdx, correct, howMany, stopOK, nextQ, results, aFrame, qFrameTablice: keeper, rank, questions, answersFunkcje: itemReset(), shuffle()Zarz¹dzanie testemZapisanie zestawu pytanie–odpowiedŸ w oknie, zapis odpowiedzi u¿ytkownika
[ Pobierz całość w formacie PDF ]