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>

Podobne dokumenty