|
Tworzenie własnych obiektów - Kurs języka JavaScript
W lekcji Tablice i obiekty opisałem ogólnie co to są obiekty i w jaki sposób można korzystać z tych które są udostępniane przez przeglądarkę internetową. Język JavaScript pozwala też na tworzenie własnych obiektów, i temu zagadnieniu poświęcona będzie ta część kursu. Do stworzenia obiektu używa się funkcji - konstruktora. Jej jedyną cechą specjalną jest to że musi się nazywać tak samo jak tworzony obiekt. Do utworzenia instancji obiektu należy potem użyć tak jak zazwyczaj operatora function Punkt() { } var p = new Punkt(); Funkcja - konstruktor może też przyjmować parametry, przy pomocy których można np. zainicjować pola obiektu. Robi się to analogicznie jak tworząc nowe właściwości w już istniejących egzemplarzach obiektów - wystarczy przypisać wartość do właściwości którą chce się utworzyć. Ponieważ bieżący egzemplarz obiektu jest zawsze dostępny pod słowem kluczowym function Punkt(x, y) { this.x = x; this.y = y; } var p = new Punkt(10, 20); alert("Współrzędne punktu to (" + p.x + "," + p.y + ")"); Poza właściwościami obiekt może też udostępniać metody (funkcje). Tworzy się je prosto - najpierw należy napisać funkcję, i następnie przypisać ją tak jak właściwości do obiektu. W funkcji takiej można odwołać się do bieżącej instancji obiektu za pomocą słowa kluczowego function Punkt_wypiszWspolrzedne() { alert("Współrzędne punktu to (" + this.x + "," + this.y + ")"); } function Punkt(x, y) { this.x = x; this.y = y; this.wypiszWspolrzedne = Punkt_wypiszWspolrzedne; } var p = new Punkt(10, 20); p.wypiszWspolrzedne(); Można też skorzystać z faktu że JavaScript pozwala na tworzenie funkcji anonimowych, które można od razu przypisać jako metody do obiektu: function Punkt(x, y) { this.x = x; this.y = y; this.wypiszWspolrzedne = function() { alert("Współrzędne punktu to (" + this.x + "," + this.y + ")"); } } var p = new Punkt(10, 20); p.wypiszWspolrzedne(); Przy tworzeniu własnych obiektów warto także utworzyć specjalną funkcję o nazwie function Punkt_toString() { return "(" + this.x + "," + this.y + ")"; } function Punkt(x, y) { this.x = x; this.y = y; this.toString = Punkt_toString; } var p = new Punkt(10, 20); alert("Współrzędne punktu to " + p); Po utworzeniu metody function Punkt_toString() { return "(" + this.x + "," + this.y + ")"; } function Punkt_wypiszWspolrzedne() { alert("Współrzędne punktu to " + this); } function Punkt(x, y) { this.x = x; this.y = y; this.toString = Punkt_toString; this.wypiszWspolrzedne = Punkt_wypiszWspolrzedne; } var p = new Punkt(10, 20); p.wypiszWspolrzedne(); Każda klasa posiada także właściwość o nazwie String.prototype.KOMUNIKAT = "Komunikat: "; String.prototype.podwoj = function() { return this + " " + this; } var s = "Ala ma kota!"; alert(s.KOMUNIKAT + s.podwoj()); Istnieje też druga właściwość o nazwie var x = "1" * 1; if (x.constructor == String) alert("To jest string"); else alert("To nie jest string"); Ponieważ konstruktor jest również obiektem, więc posiada on też właściwość String.constructor.prototype.KOMUNIKAT = "Komunikat: "; String.constructor.prototype.podwoj = function(s) { return s + " " + s; } alert(String.KOMUNIKAT + String.podwoj("Ala ma kota!"));
Dodaj linka na swojej stronie! Po prostu skopiuj poniższy kod i wklej go na swojej stronie WWW. Gotowy link będzie wyglądał w taki sposób: |
| ||||||||||||||||||||||||||||||||||||