Použít funkci JavaScript
Opětovné použití metody
Pomocí této apply()
metody můžete napsat metodu, kterou lze použít na různé objekty.
Metoda JavaScript apply()
Metoda apply()
je podobná call()
metodě (předchozí kapitola).
V tomto příkladu je metoda fullName osoby použita na osobu1 :
Příklad
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
Rozdíl mezi call() a apply()
Rozdíl je:
Metoda call()
bere argumenty samostatně .
Metoda apply()
bere argumenty jako pole .
Metoda apply() je velmi užitečná, pokud chcete místo seznamu argumentů použít pole.
Metoda apply() s argumenty
Metoda apply()
přijímá argumenty v poli:
Příklad
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]);
V porovnání s call()
metodou:
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");
Simulujte maximální metodu na polích
Největší číslo (v seznamu čísel) můžete najít pomocí Math.max()
metody:
Příklad
Math.max(1,2,3); // Will return 3
Protože pole JavaScriptu nemají metodu max(), můžete ji použít
Math.max()
.
Příklad
Math.max.apply(null, [1,2,3]); // Will also return 3
Na prvním argumentu (null) nezáleží. V tomto příkladu se nepoužívá.
Tyto příklady poskytnou stejný výsledek:
Příklad
Math.max.apply(Math, [1,2,3]); // Will also return 3
Příklad
Math.max.apply(" ", [1,2,3]); // Will also return 3
Příklad
Math.max.apply(0, [1,2,3]); // Will also return 3
Přísný režim JavaScriptu
V přísném režimu JavaScriptu, pokud první argument apply()
metody není objekt, stává se vlastníkem (objektem) vyvolané funkce. V „nepřísném“ režimu se stane globálním objektem.