Повторное использование метода
С помощью метода apply()
вы можете написать метод, который можно использовать (применить) на разных объектах.
JavaScript Метод apply()
Метод apply()
аналогичен методу call()
(см. в предыдущем разделе).
В этом примере метод fullName объекта person применяется на person1:
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName: "Щипунов",
lastName: "Андрей"
}
person.fullName.apply(person1); // Вернёт "Щипунов Андрей"
Попробуйте сами »
Разница между call() и apply()
Различием является:
Метод call()
принимает аргументы отдельно.
Метод apply()
принимает аргументы в виде массива.
Метод apply() очень удобен, если вы хотите использовать массив вместо списка аргументов.
Метод apply() с аргументами
Метод apply()
принимает аргументы в массиве:
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
var person1 = {
firstName:"Щипунов",
lastName: "Андрей"
}
person.fullName.apply(person1, ["Пермь", "Россия"]);
Попробуйте сами »
По сравнению с методом call()
:
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
var person1 = {
firstName:"Щипунов",
lastName: "Андрей"
}
person.fullName.call(person1, "Пермь", "Россия");
Попробуйте сами »
Имитация Max-метода на массивах
Вы можете найти наибольшее число (в списке чисел), используя метод Math.max()
:
Math.max(1,2,3); // Вернёт 3
Попробуйте сами »
Поскольку JavaScript массивы не имеют max() метода, вы можете вместо этого применить метод Math.max()
.
Math.max.apply(null, [1,2,3]); // Также вернёт 3
Попробуйте сами »
Первый аргумент (ноль) не имеет значения. Не используется в этом примере.
Эти примеры дадут тот же результат:
Math.max.apply(Math, [1,2,3]); // Также вернёт 3
Попробуйте сами »
Math.max.apply(" ", [1,2,3]); // Также вернёт 3
Попробуйте сами »
Math.max.apply(0, [1,2,3]); // Также вернёт 3
Попробуйте сами »
Строгий режим JavaScript
В строгом режиме JavaScript, если первый аргумент метода apply()
не является объектом, он становится владельцем (объектом) вызываемой функции. В "нестрогом" режиме он становится глобальным объектом.