JS: Objektid ja meetodid

JavaScripti objektid on andmete struktuurid, mis aitavad hoida seotud andmeid koos. Objektid koosnevad paaridest võti-väärtus, kus võti on string ja väärtus võib olla ükskõik mis andmetüüp. Me kohtame objekte iga päev, näiteks e-poes on toode objekt või hotellis on broneerimine objekt. JS-is on ka sisseehitatud objektid, näiteks Math matemaatika jaoks, Date aegade jaoks, Array ja String.

Siin on näide kuidas luua auto objekt:

let auto = {
  mark: "Toyota",
  mudel: "Corolla",
  aasta: 2022,
  varv: "punane",
  omadused: ["kliimaseade", "elektriaknad"]
};

console.log(auto);
console.log(auto.mark);

See kood teeb auto objekti. Kui ma kirjutan auto.mark, konsool näitab ainult seda marki.

Objekt võib sisaldada ka funktsioone, mida nimetatakse meetoditeks. Sõna this viitab samale objektile.

let auto = {
  mark: "Toyota",
  mudel: "Corolla L",
  taisnimi: function() {
    return this.mark + " " + this.mudel;
  }
};

console.log(auto.taisnimi());

See kood kasutab this.mark, mis võtab margi sellest samast objektist.

Siin on minu tehtud kodutöö kood raamatu ja raamatukogu kohta:

let raamat = {
  pealkiri: "Kevade",
  autor: "Oskar Luts",
  aasta: 1912,
  
  kirjeldus() {
    return "Raamat on " + this.pealkiri + ", autor on " + this.autor + ", aasta on " + this.aasta;
  },
  
  muudaAastat(uus) {
    this.aasta = uus;
    console.log("Uus aasta on nüüd: " + this.aasta);
  }
};

console.log(raamat.kirjeldus());
raamat.muudaAastat(1915);


let raamatukogu = {
  raamatud: [
    { pealkiri: "Tõde ja õigus", autor: "Tammsaare", aasta: 1926 },
    { pealkiri: "Rehepapp", autor: "Kivirähk", aasta: 2000 },
    { pealkiri: "Kinnisvara", autor: "Keegi Veel", aasta: 2021 }
  ],
  
  kuvaKaik() {
    this.raamatud.forEach(r => console.log(r.pealkiri));
  },
  
  lisaRaamat(p, a, aa) {
    this.raamatud.push({ pealkiri: p, autor: a, aasta: aa });
    console.log("Lisatud!");
  },
  
  naytaKokku() {
    console.log("Kokku raamatuid: " + this.raamatud.length);
  },
  
  alates2000() {
    let uued = this.raamatud.filter(r => r.aasta >= 2000);
    console.log("Uusi raamatuid alates 2000 on: " + uued.length);
  },
  
  otsiAutori(nimi) {
    let res = this.raamatud.filter(r => r.autor.includes(nimi));
    console.log("Leidsin autori järgi:", res);
  }
};

raamatukogu.kuvaKaik();
raamatukogu.lisaRaamat("Lummatud", "Mingi Autor", 2023);
raamatukogu.naytaKokku();
raamatukogu.alates2000();
raamatukogu.otsiAutori("Tammsaare");

GitHub