Полный цикл в digital

Функция как объект

В JavaScript функция тоже является объектом - объектом Function и тоже имеет прототип, свойства, методы. Все функции, которые используются в программе, являются объектами Function и имеют все его свойства и методы. Например, мы можем создать функцию с помощью конструктора Function:

var square = new Function('n', 'return n * n;');
console.log(square(5));

В конструктор Function может передаваться ряд параметров. Последний параметр представляет собой само тело функции в виде строки. Фактически строка содержит код javascript. Предыдущие аргументы содержат названия параметров. В данном случае определяется функция возведения числа в квадрат, которая имеет один параметр n. Среди свойств объекта Function можно выделить следующие:

  • arguments массив аргументов, передаваемых в функцию
  • length определяет количество аргументов, которые ожидает функция
  • caller определяет функцию, вызвавшую текущую выполняющуюся функцию
  • name имя функции
  • prototype прототип функции

С помощью прототипа мы можем определить дополнительные свойства:

function display(){
console.log("привет мир");
}
Function.prototype.program ="Hello";
// Hello
console.log(display.program);

Методы call() и apply()

Среди методов надо отметить методы call() и apply().

Метод call()

Метод call() вызывает функцию с указанным значением this и аргументами:

function add(x, y){
return x + y;
}
var result = add.call(this, 3, 8);
// 11
console.log(result);

this указывает на объект, для которого вызывается функция - в данном случае это глобальный объект window. После this передаются значения для параметров.

При передаче объекта через первый параметр, мы можем ссылаться на него через ключевое слово this:

function User (name, age) {
this.name = name;
this.age = age;
}
var tom = new User("Том", 26);
function display(){
console.log("Ваше имя: " + this.name);
}
// Ваше имя: Том
display.call(tom);

В данном случае передается только одно значение, поскольку функция display не принимает параметров. То есть функция будет вызываться для объекта tom.

Если нам не важен объект, для которого вызывается функция, то можно передать значение null:

function add(x, y){
return x + y;
}
var result = add.call(null, 3, 8);
// 11
console.log(result);

Метод apply()

Метод вызывает функцию и в качестве первого параметра также получает объект, для которого функция вызывается. Только теперь в качестве второго параметра передается массив аргументов:

function add(x, y){
return x + y;
}
var result = add.apply(null, [3, 8]);
// 11
console.log(result);
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг