Применить функцию JavaScript
Повторное использование метода
С помощью apply()
метода вы можете написать метод, который можно использовать для разных объектов.
JavaScript-метод apply()
Метод apply()
аналогичен call()
методу (предыдущая глава).
В этом примере метод fullName для person применяется к person1 :
Пример
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
Разница между call() и apply()
Разница в следующем:
Метод call()
принимает аргументы отдельно .
Метод apply()
принимает аргументы в виде массива .
Метод apply() очень удобен, если вы хотите использовать массив вместо списка аргументов.
Метод apply() с аргументами
Метод apply()
принимает аргументы в виде массива:
Пример
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"]);
По сравнению с call()
методом:
Пример
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");
Симулируйте метод Max на массивах
Вы можете найти наибольшее число (в списке чисел), используя Math.max()
метод:
Пример
Math.max(1,2,3); // Will return 3
Поскольку массивы JavaScript не имеют метода max(), вы можете
Math.max()
вместо этого применить этот метод.
Пример
Math.max.apply(null, [1,2,3]); // Will also return 3
Первый аргумент (null) не имеет значения. В данном примере он не используется.
Эти примеры дадут тот же результат:
Пример
Math.max.apply(Math, [1,2,3]); // Will also return 3
Пример
Math.max.apply(" ", [1,2,3]); // Will also return 3
Пример
Math.max.apply(0, [1,2,3]); // Will also return 3
Строгий режим JavaScript
В строгом режиме JavaScript, если первый аргумент apply()
метода не является объектом, он становится владельцем (объектом) вызываемой функции. В «нестрогом» режиме он становится глобальным объектом.