16. Własne obiekty

Obiekt to konstrukcja programistyczna mająca swoje cechy charakterystyczne (właściwości), które mogą być zmiennymi lub innymi obiektami. Dodatkowo obiekt ma możliwość wykonywania różnych funkcji, które nazywamy metodami. Obiekt definiujemy tworząc specjalną funkcję zwaną konstruktorem, a następnie tworzymy obiekt stosując operator new. Obiekty w JavaScript tworzymy używając operatora new. Poniżej utworzymy w locie obiekt samochod i nadamy my kilka metod i własności. Sposób pierwszy:


<script>
    var samochod = new Object();
    samochod.ilosc_drzwi = 4;
    samochod.marka = "audi";
    samochod.predkosc_obecna = 0;
    samochod.przyspiesz = function(){
            this.predkosc_obecna += 1;
        }
    samochod.przyspiesz_o = function( v ){
            this.predkosc_obecna +=v;
        }
</script>

Sposób drugi:

<script>
    var samochod = {
    samochod.ilosc_drzwi : 4,
    samochod.marka : "audi",
    samochod.predkosc_obecna : 0,
    samochod.przyspiesz : function(){
            this.predkosc_obecna += 1;
        },
    samochod.przyspiesz_o : function( v ){
            this.predkosc_obecna +=v;
        }
    }
</script>

To były obiekty tworzone w locie i trudno jest użyć ich strukturę wielokrotnie. Teraz pokażę jak można tworzyć obiekty w inny sposób. Utworzymy najpierw strukturę obiektu, a później utworzymy tablicę obiektów. Posłużymy się tutaj naszym wcześniejszym obiektem samochód i utworzymy tabelę o nazwie flota w której to tabeli zawrzemy kilka obiektów samochód o różnych własnościach.

<script>
    //to jest nasz konstruktor obiektu
    function samochod (_il_drzwi, _marka){
        ilosc_drzwi : _il_drzwi;
        marka : _marka;
        predkosc_obecna : 0;
        przyspiesz : function(){
            this.predkosc_obecna += 1;
        }
        przyspiesz_o : function( v ){
            this.predkosc_obecna +=v;
        }
        toString:function(){
            return 'marka auta: '+this.marka+
             'ilość drzwi: '+this.ilosc_drzwi+
             'prędkość obecna: '+this.predkosc_obecna;
        }
    }

    //a tutaj tworzymy tablicę obiektów o nazwie flota
    var flota = new Array();

    // dodajemy do floty pierwsze auto
    flota.push(new samochod(4, 'audi'))

    //wyświetlamy pierwsze auto z floty
    document.write(flota[0]);
    // dodajemy do floty kolejne auto
    flota.push(new samochod(2, 'opel'))

    //wyświetlamy wszystkie auta z floty
    for(i=0; i<flota.length; i++){
        document.write(flota[i]);
    }
</script>

Każdy obiekt ma zdefiniowaną specjalną własność zwaną prototype. Dzięki niej mamy możliwość zdefiniowania prototypów klasy, tzn. możemy zadeklarować zestaw właściwości i metod, które będą posiadał każdy obiekt utworzony za pomocą słowa kluczowego new. Używając naszego wcześniejszego obiektu samochod możemy dopisać do obiektu nowe własności i metody np.:

<script>
    samochod.prototype.przebieg = 100;
    samochod.kierowca = 'Zenek';
</script>



16a. Tworzenie obiektów w locie sposób 1
16b. Tworzenie obiektów w locie sposób 2
16c. Tablica obiektów