Volání funkce JavaScript
Opětovné použití metody
Pomocí této call()
metody můžete napsat metodu, kterou lze použít na různé objekty.
Všechny funkce jsou metody
V JavaScriptu jsou všechny funkce objektovými metodami.
Pokud funkce není metodou JavaScriptového objektu, je funkcí globálního objektu (viz předchozí kapitola).
Níže uvedený příklad vytvoří objekt se 3 vlastnostmi, firstName, lastName, fullName.
Příklad
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
Toto klíčové slovo
V definici funkce this
odkazuje na "vlastníka" funkce.
Ve výše uvedeném příkladu this
je objekt person , který „vlastní“ funkci
fullName .
Jinými slovy this.firstName znamená vlastnost firstName tohoto objektu .
Přečtěte si více o this
klíčovém slově na JS this Keyword .
Metoda volání () JavaScriptu
Metoda call()
je předdefinovaná metoda JavaScriptu.
Lze jej použít k vyvolání (volání) metody s objektem vlastníka jako argumentem (parametrem).
Pomocí call()
, může objekt používat metodu patřící jinému objektu.
Tento příklad volá metodu fullName osoby a používá ji na osobě1 :
Příklad
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
Tento příklad volá metodu fullName osoby a používá ji na osobě2 :
Příklad
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
Metoda call() s argumenty
Metoda call()
může přijímat argumenty:
Příklad
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");