function
Transkrypt
function
Wykład 5 Obiekty Słowo kluczowe this Nadając i wykorzystując identyfikatory właściwości i metod obiektów korzystamy ze słowa kluczowego this. Rozumiane jest ono jako obiekt bieżący, właściciel metody lub właściwości. Poniżej prosty przykład wyjaśniający znaczenie słowa kluczowego this: <HTML> <HEAD> </HEAD> <BODY style="font-size:18px"> <P> AKAPIT</P> <PRE> <SCRIPT language="JavaScript"> function kolor1( ) { this.document.bgColor = "red"; } function kolor2(e) { e.style.color = "yellow"; } </SCRIPT> </PRE> <INPUT type="button" value="Kolor dla tła okna" onclick="kolor1( )"> <INPUT type="button" value="Kolor dla napisu na przycisku" onclick="kolor2(this)"> </BODY> </HTML> Definicja obiektu i tworzenie instancji obiektu W definicji obiektu tworzymy: • właściwości obiektu (zmienne proste lub obiektowe), • metody obiektu (funkcje wewnętrzne) Utworzenie konkretnej instancji obiektu var piesek = { //definiowanie obiektu –uwaga na interpunkcję! //właściwości imie: "Maja", rasa: "kundel", kolor: "zółty", plec: "suczka", glos:"haaaauuuu", nogi:4, //metody dajGlos: function ( ) { document.writeln(this.glos); } innaMetoda: function(){ } }; // i teraz wykorzystanie właściwości i metod obiektu piesek document.writeln(piesek.imie); piesek.dajGlos ( ); Definicje obiektów (tzw. konstruktor obiektu) Sposób 1 Przykładowo funkcja definiująca obiekt: function Nazwa(argument1, argument2) { this.właściwość1 = argument1; //nadanie wartości przez argument this.właściwość2 = argument2; //nadanie wartości przez argument this.właściwość3 = 5; //nadanie stałej wartości this.właściwość4 = true; //nadanie stałej wartości this.metoda1=function ( ) { //definicja funkcji } //itd. } Można wygenerować wiele "egzemplarzy" (instancji) obiektu o definicji Nazwa() i przypisać je do zmiennych referencji p1 i p2. Wykorzystujemy tu zapis ze słowem kluczowym new: var p1 = new Nazwa( argumenty aktualne); //zmienna lokalna albo p2 = new Nazwa( inne argumenty aktualne); //zmienna globalna Przykład <PRE> <SCRIPT language="JavaScript"> //funkcja konstruktor function Pies1(imie, rasa, kolor, plec) { //własciwości this. imie = imie; this. rasa = rasa; this. kolor = kolor; this. plec = plec; this.glos ="HAUUUU"; //dla wszystkich psów ten sam //metoda this.dajGlos = function () { document.writeln (this.glos); }; };//koniec definicji konstruktora //teraz utworzymy dwie instancje (dwa obiekty typu Pies1) var piesek1 = new Pies1( "Misia", "Labrador", "czekoladowa", "suka" ); var piesek2 = new Pies1( "Misiek", "Seter", "rudy", "pies" ); //możemy mieć dostęp do właściwości i metod document.writeln(piesek1.imie); // ->Misia piesek1.dajGlos ( ); //-> HAUUUU //itd. </SCRIPT> </PRE> Sposób 2 //funkcja konstruktor Pies2 = function (im , ra, ko, pl) { var obiektPies = { imie: im, rasa: ra, kolor: ko, plec: pl, glos:"HAUUU", dajGlos: function ( ) { document.writeln(this.glos); } }; //funkcja zwraca zdefiniowany obiekt return obiektPies; }; //tworzenie instancji klasy var piesek3 = new Pies2( "Milka", "Spaniel", "czekoladowa", "suka" ); var piesek4 = new Pies2( "Reksio", "Dog", "czarny", "pies" ); //możemy mieć dostęp do właściwości i wykonywać metody document.writeln(piesek1.imie); piesek1.dajGlos (); //itd. </SCRIPT> </PRE>