Objekty jako argumenty

Funkce a objekty se k sobě hodí. Funkce může dostat jako argument celý objekt a přečíst si z něj vlastnosti, které potřebuje:

function popisZvirete(zvire) {
    return `${zvire.jmeno} má ${zvire.vek} roky.`;
}

const rex = { jmeno: "Rex", druh: "pes", vek: 3 };
console.log(popisZvirete(rex));
console.log(popisZvirete({ jmeno: "Kiwi", druh: "papoušek", vek: 4 }));
Rex má 3 roky.
Kiwi má 4 roky.

Parametr zvire je název pro objekt, který funkci při volání předáte: při prvním volání je to objekt Rexe, při druhém Kiwiho. Místo tří argumentů pro jméno, druh a věk předáte jeden a funkce si z něj vezme, co potřebuje.

Funkce může dostat i pole objektů. Tahle vrátí průměrný věk zvířat v poli:

function prumernyVek(zvirata) {
    let soucet = 0;
    for (const zvire of zvirata) {
        soucet += zvire.vek;
    }
    return soucet / zvirata.length;
}

const zvirata = [
    { jmeno: "Rex", druh: "pes", vek: 3 },
    { jmeno: "Micka", druh: "kočka", vek: 2 },
    { jmeno: "Kiwi", druh: "papoušek", vek: 4 }
];
console.log(prumernyVek(zvirata));
3

Funkci napíšete jednou a můžete ji použít pro jakékoli pole zvířat: pro tento obchod, pro jiný nebo pro zvířata, která přibudou zítra.

Mimochodem, objekt s funkcemi používáte už od první lekce. console je objekt a log je jedna z jeho vlastností. Její hodnotou je funkce, a proto ji voláte se závorkami: console.log(). Funkci uložené v objektu se říká metoda. Proto se také push() a includes() říká metody pole. Funkci můžete uložit i do svého objektu:

const pes = {
    jmeno: "Rex",
    stekej: () => console.log("Haf!")
};

pes.stekej();
Haf!

Pokyny

Doplňte funkci popisPolozky: má vrátit (ne vypsat) název a cenu položky, kterou dostane, jako text, třeba "Míček: 60". Cyklus na konci pak vypíše všechny čtyři položky: Granule pro psa: 250, Míček: 60 a tak dále.

Doplňte funkci celkovaCena: má vrátit součet cen všech položek v poli polozky. Poslední dva řádky pak budou Celkem: 535 a Malý košík: 105.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/9