This article has been localized into Czech by the community.
Metody
V této kapitole o objektech JavaScriptu jsme se doposud soustředili především na vlastnosti. Avšak také jsem zmínil, že vlastnosti mohou obsahovat složitější typy, jako jsou jiné objekty, nebo dokonce funkce. Jinými slovy, můžeme k našim objektům snadno přidávat funkce.
Jakmile je funkce deklarována na objektu nebo třídě, označuje se jako metoda. V tomto článku vám ukážu, jak přidat metody k vašim objektům.
Metody objektu
Když vytvoříte objekt, můžete k němu jednoduše přidat metodu tak, že deklarujete vlastnost a přiřadíte funkci jako její hodnotu, takto:
let user =
{
name: "John Doe",
age: 42,
describe: function()
{
}
};
Všimněte si, jak deklaruji několik jednoduchých vlastností (jméno a věk) a poté vlastnost, kterou nazývám popis, která má funkci jako svou hodnotu. Uvnitř této funkce můžeme snadno interagovat s vlastnostmi objektu pomocí klíčového slova this. Zde je příklad objektu s vlastnostmi a metodou:
let user =
{
name: "John Doe",
age: 42,
describe: function()
{
return this.name + " is " + this.age + " years old";
}
};
alert(user.describe());
Vlastnost describe nyní odkazuje na kompletní funkci, která bude využívat další vlastnosti objektu. Při použití této metody v posledním řádku příkladu, voláme metodu stejně, jako bychom to dělali s jakoukoli jinou funkcí.
Jak jsme viděli v předchozím článku, vlastnosti mohou být přidány k objektu po jeho vytvoření, a protože metody objektu jsou jen vlastnosti odkazující na funkce, je to samozřejmě možné i u metod. Zde je přepsaná verze výše uvedeného příkladu:
let user =
{
name: "John Doe",
age: 42
};
user.describe = function()
{
return this.name + " is " + this.age + " years old";
}
alert(user.describe());
Stejně jako u jakékoli jiné vlastnosti, můžeme metodu přidat jednoduše odkazem na nový název vlastnosti a přiřazením hodnoty k ní (v tomto případě funkce).
A jen abychom to měli naprosto jasné, metody objektů mají stejné výhody jako běžné funkce JavaScriptu, které byly podrobně popsány v předchozí kapitole. Například mohou přijímat libovolný počet parametrů, které budou metodou použity. Zde je příklad:
let user =
{
name: "John Doe",
age: 42,
describe: function(country)
{
return this.name + " is " + this.age + " years old and currently lives in " + country;
}
};
alert(user.describe("Germany"));
Zkrácená syntaxe metody
Ve specifikaci ES6 JavaScriptu byla představena kratší syntaxe pro deklaraci metod objektů. Tato syntaxe je více v souladu s jinými programovacími jazyky, stejně jako se syntaxí používanou pro metody tříd. V podstatě skrývá fakt, že metoda objektu je jen vlastnost s přiřazenou funkcí. Takto by to mohlo vypadat:
let user =
{
name: "John Doe",
age: 42,
describe()
{
return this.name + " is " + this.age + " years old";
}
};
alert(user.describe());
Všimnete si, že s touto syntaxí můžeme vynechat klíčové slovo function - JavaScript pozná, že se jedná o metodu, díky závorkám následujícím za názvem. Opět jde jen o syntaktickou zkratku - dosahuje přesně toho samého, co příklady výše, takže můžete použít syntaxi, která vám vyhovuje.
Shrnutí
Díky všestranné povaze vlastností objektů v JavaScriptu můžeme k našim objektům přidávat funkce. Kdykoli je funkce deklarována na objektu nebo třídě, označuje se jako metoda a tímto způsobem se naše objekty stávají více než jen kontejnery pro data - mohou skutečně něco dělat.