JavaScript Применение функции
Повторное использование метода
С помощью метода Apply () можно написать метод, который можно использовать для различных объектов.
Метод JavaScript Apply ()
Метод Apply () аналогичен методу Call () (Предыдущая глава).
В этом примере фулллнаме метод Person применяется на person1:
Пример
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName: "Mary",
lastName: "Doe",
}
person.fullName.apply(person1); // Will return "Mary
Doe"
Разница между вызовом () и Apply ()
Разница заключается в:
Метод Call () принимает аргументы отдельно.
Метод Apply () принимает аргументы в виде массива.
Метод Apply () очень удобен, если вы хотите использовать массив вместо списка аргументов.
Метод Apply () с аргументами
Метод Apply () принимает аргументы в массиве:
Пример
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
var person1 = {
firstName:"John",
lastName: "Doe",
}
person.fullName.apply(person1, ["Oslo", "Norway"]);
По сравнению с методом Call () :
Пример
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
var 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 () не является объектом, он становится владельцем (объектом) вызываемой функции. В режиме "не строго" он становится глобальным объектом.