JS: Objektid ja meetodid

Objekt on andmete ja sellega seotud funktsionaalsuse kogum: näiteks omadused + tegevused, mida objekt saab teha.

Meetod on funktsioon, mis kuulub objekti juurde — st objekti omaduse väärtusena on defineeritud funktsioon, mida saab objekti kontekstis käivitada.

millised funktsioonid on kasutusel?

  • Objekti omaduste määramine / muutmine
  • Objekti meetodite defineerimine.
  • Meetodi kutsumine objekti kontekstis.
  • massiivide või objektide meetodite kasutamine
  • Objekti loomine
// objekti loomine
let auto = {
    mark: "Toyota",
    mudel: "Corolla",
    aasta: 2022,
    varv: "punane",
    lisavarustus: ["kliimaseade", "elektriaknad", "navigatsioonisüsteem"]
};


//väljastamiseks
// F12 brauseris et naidata konsooli
console.log(auto);

Console vaade:

Objekti meetodid ja this kasutamine

let auto = {
    //omadused
    mark: "Toyota",
    mudel: "Corolla L",
    aasta: 2022,
    varv: "punane",
    omadused: ["kliimaseade", "elektriaknad", "navigatsioonisüsteem"],

    //meetodid
    taisnimi: function() {
        return this.mark + " " + this.mudel;
    }
};

console.log(auto.taisnimi());

Console vaade:

Meetodi lühendamine

let auto = {
    //omadused
    mark: "BMW",
    mudel: "M4A1",
    aasta: 2069,
    varv: "roheline",
    omadused: ["kliimaseade", "elektriaknad", "navigatsioonisüsteem", "plus aura"],

    //meetodid
    taisnimi() {
        return this.mark + " " + this.mudel;
    },

    kuvaOmadused() {
        this.omadused.forEach(omadus => console.log(omadus));
    }
};

auto.kuvaOmadused();

Console vaade:

Objektide massiivi loomine ja kuvamine

let autod = [
    { mark: 'BMW', mudel: 'M4A1', aasta: 2069 },
    { mark: 'Honda', mudel: 'Tsik', aasta: 1900 },
    { mark: 'Tesla', mudel: 'Model MechaHitler', aasta: 2050 }
];


autod.forEach((auto) => {
    console.log(`
    Mark: ${auto.mark},
    Mudel: ${auto.mudel},
    Aasta: ${auto.aasta}
    `);
});

Console vaade:

Objekti massiivi meetodid

näiteks: push()pop()shift()unshift()splice()slice()forEach()map()filter()reduce()sort(),

let autod = [
    { mark: 'Toyota', mudel: 'Corolla', aasta: 2007 },
    { mark: 'Honda', mudel: 'Civic', aasta: 2012 },
    { mark: 'Tesla', mudel: 'Model 3', aasta: 2019 }
];

//Lisab uue objekti massiivi lõppu push ja unshift abil
autod.push({ mark: 'BMW', mudel: '320i', aasta: 2015 });
autod.unshift({ mark: 'Ford', mudel: 'Focus', aasta: 2020 });

//Eemaldab esimese objekti
autod.splice(0,1);
//Lisab objekti alates teisest indeksist, ei kustutata midagi
autod.splice(1,0,{ mark: 'Audi', mudel: 'A4', aasta: 2018 });



Massiivi filtreerimine ja otsimine

let autod = [
    { mark: 'Toyota', mudel: 'Corolla', aasta: 2007 },
    { mark: 'Honda', mudel: 'Civic', aasta: 2012 },
    { mark: 'Tesla', mudel: 'Model 3', aasta: 2019 }
];

//Lisab uue objekti massiivi lõppu push ja unshift abil
autod.push({ mark: 'BMW', mudel: '320i', aasta: 2015 });
autod.unshift({ mark: 'Ford', mudel: 'Focus', aasta: 2020 });

//Eemaldab esimese objekti
autod.splice(0,1);
//Lisab objekti alates teisest indeksist, ei kustutata midagi
autod.splice(1,0,{ mark: 'Audi', mudel: 'A4', aasta: 2018 });


//Otsimine
let otsing = autod.find(auto=>auto.aasta > 2018 && auto.mark === "Tesla");
console.log(otsing);

//Filtreerimine
let filter = autod.filter(auto=>auto.aasta > 2012);
console.log(filter);

Raamatu objekt

// Loon objekti 'raamat'
let raamat = {
    pealkiri: 'Mein Kampf',
    autor: 'Adolf Hitler',
    aasta: 1925,

    // Meetod, mis kuvab raamatu kirjelduse
    kuvaKirjeldus: function() {
        console.log(`"${this.pealkiri}" autor on ${this.autor}, avaldatud aastal ${this.aasta}.`);
    },

    // Meetod, mis muudab väljaandmise aastat
    muudaAasta: function(uusAasta) {
        this.aasta = uusAasta;
        console.log(`Raamatu uus väljaandmise aasta on ${this.aasta}.`);
    }
};
let vastus=document.getElementById("vastus");
// Näitame, kuidas meetodeid kasutada:
raamat.kuvaKirjeldus();     // Kuvab algse kirjelduse
raamat.muudaAasta(1933);    // Muudab aasta ja kuvab uue
raamat.kuvaKirjeldus();     // Kuvab uuendatud kirjelduse

Raamatukogu

// Loon objekti 'raamatukogu'
let raamatukogu = {
    raamatud: [
        { pealkiri: 'Tõde ja õigus', autor: 'A. H. Tammsaare', aasta: 1926 },
        { pealkiri: 'Harry Potter ja tarkade kivi', autor: 'J. K. Rowling', aasta: 1997 },
        { pealkiri: 'Sapiens', autor: 'Yuval Noah Harari', aasta: 2011 }
    ],

    // Meetod, mis kuvab kõik raamatud kenasti konsoolis
    kuvaKoikRaamatud: function() {
        let list = document.getElementById("raamatuteList");
        list.innerHTML = ''; // tühjenda eelmine sisu
        this.raamatud.forEach(r => {
            let li = document.createElement("li");
            li.className = "raamat";
            li.textContent = `"${r.pealkiri}" - ${r.autor} (${r.aasta})`;
            list.appendChild(li);
        });
    },

    // Meetod, mis lisab uue raamatu raamatukokku
    lisaRaamat: function(pealkiri, autor, aasta) {
        this.raamatud.push({ pealkiri, autor, aasta });
        console.log(` Raamat "${pealkiri}" on lisatud raamatukokku!`);
    },



    // Minu enda loodud meetod:
    // Näiteks meetod, mis leiab vanima raamatu raamatukogus
    leiaVanimRaamat: function() {
        let vanim = this.raamatud.reduce((vanim, r) => r.aasta < vanim.aasta ? r : vanim);
        console.log(` Vanim raamat on "${vanim.pealkiri}" (${vanim.aasta}) autorilt ${vanim.autor}.`);

    }

};

// --- Testime kõiki meetodeid ---
raamatukogu.kuvaKoikRaamatud();
raamatukogu.lisaRaamat('The Martian', 'Andy Weir', 2014);


raamatukogu.leiaVanimRaamat();

https://airontatrik24.thkit.ee/objektMeetodid/autod.html