Zastosuj funkcję JavaScript
Ponowne użycie metody
Za pomocą apply()
metody możesz napisać metodę, której można użyć na różnych obiektach.
Metoda JavaScript apply()
Metoda apply()
jest podobna do call()
metody (poprzedni rozdział).
W tym przykładzie metoda fullName osoby jest zastosowana do osoby1 :
Przykład
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
Różnica między call() i apply()
Różnica polega na:
Metoda call()
pobiera argumenty oddzielnie .
Metoda apply()
przyjmuje argumenty jako tablicę .
Metoda apply() jest bardzo przydatna, jeśli chcesz użyć tablicy zamiast listy argumentów.
Metoda apply() z argumentami
Metoda apply()
przyjmuje argumenty w tablicy:
Przykład
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"]);
W porównaniu z call()
metodą:
Przykład
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");
Symuluj metodę Max na tablicach
Największą liczbę (na liście liczb) można znaleźć za pomocą Math.max()
metody:
Przykład
Math.max(1,2,3); // Will return 3
Ponieważ tablice JavaScript nie mają metody max(), możesz
Math.max()
zamiast tego zastosować tę metodę.
Przykład
Math.max.apply(null, [1,2,3]); // Will also return 3
Pierwszy argument (null) nie ma znaczenia. Nie jest używany w tym przykładzie.
Te przykłady dadzą ten sam wynik:
Przykład
Math.max.apply(Math, [1,2,3]); // Will also return 3
Przykład
Math.max.apply(" ", [1,2,3]); // Will also return 3
Przykład
Math.max.apply(0, [1,2,3]); // Will also return 3
Tryb ścisły JavaScript
W trybie ścisłym JavaScript, jeśli pierwszy argument apply()
metody nie jest obiektem, staje się właścicielem (obiektem) wywołanej funkcji. W trybie „nie-ścisłym” staje się obiektem globalnym.