Vyvolání funkce JavaScript
Kód uvnitř JavaScriptu function
se spustí, když jej „něco“ vyvolá.
Vyvolání funkce JavaScriptu
Kód uvnitř funkce se nespustí, když je funkce definována .
Kód uvnitř funkce se provede, když je funkce vyvolána .
Je běžné používat termín „ zavolat funkci “ místo „ vyvolat funkci “.
Je také běžné říkat „zavolat funkci“, „spustit funkci“ nebo „vykonat funkci“.
V tomto tutoriálu použijeme invoke , protože funkci JavaScript lze vyvolat bez volání.
Vyvolání funkce jako funkce
Příklad
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
Výše uvedená funkce nepatří žádnému objektu. Ale v JavaScriptu je vždy výchozí globální objekt.
V HTML je výchozím globálním objektem samotná stránka HTML, takže funkce výše „patří“ stránce HTML.
V prohlížeči je objektem stránky okno prohlížeče. Výše uvedená funkce se automaticky stane funkcí okna.
myFunction() a window.myFunction() je stejná funkce:
Příklad
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Toto je běžný způsob vyvolání funkce JavaScriptu, ale není to příliš dobrý postup.
Globální proměnné, metody nebo funkce mohou snadno vytvářet konflikty jmen a chyby v globálním objektu.
Toto klíčové slovo
V JavaScriptu je věc zvaná this
, objekt, který „vlastní“ aktuální kód.
Hodnota this
, je-li použita ve funkci, je objekt, který „vlastní“ funkci.
Všimněte si, že this
to není proměnná. Je to klíčové slovo. Nemůžete změnit hodnotu this
.
Tip: Přečtěte si více o this
klíčovém slově na JS this Keyword .
Globální objekt
Když je funkce volána bez objektu vlastníka, hodnota this
se stane globálním objektem.
Ve webovém prohlížeči je globálním objektem okno prohlížeče.
Tento příklad vrátí objekt okna jako hodnotu this
:
Příklad
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
Vyvolání funkce jako globální funkce způsobí, že tato hodnota bude globálním objektem.
Použití objektu okna jako proměnné může snadno spadnout váš program.
Vyvolání funkce jako metody
V JavaScriptu můžete definovat funkce jako objektové metody.
Následující příklad vytvoří objekt ( myObject ) se dvěma vlastnostmi ( firstName a lastName ) a metodou ( fullName ):
Příklad
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Metoda fullName je funkce. Funkce patří k objektu. myObject je vlastníkem funkce.
Věc zvaná this
, je objekt, který „vlastní“ kód JavaScript. this
V tomto případě je hodnota myObject .
Otestujte to! Změňte metodu fullName tak , aby vrátila hodnotu this
:
Příklad
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
Vyvolání funkce jako objektové metody způsobí, že hodnotou this
objektu je samotný objekt.
Vyvolání funkce pomocí konstruktoru funkcí
Je-li před vyvoláním funkce new
klíčové slovo, jedná se o vyvolání konstruktoru.
Vypadá to, že vytvoříte novou funkci, ale protože funkce JavaScriptu jsou objekty, ve skutečnosti vytvoříte nový objekt:
Příklad
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
Vyvolání konstruktoru vytvoří nový objekt. Nový objekt zdědí vlastnosti a metody od svého konstruktoru.
Klíčové this
slovo v konstruktoru nemá hodnotu.
Hodnota this
will je nový objekt vytvořený při vyvolání funkce.