JavaScript виконання коду JavaScript підключення зовнішнього файлу JavaScript console.log JavaScript змінні і константи JavaScript типи даних JavaScript операції зі змінними JavaScript перетворення даних JavaScript масиви JavaScript умовні конструкції JavaScript цикли JavaScript функції JavaScript область видимості змінних JavaScript замикання і функції IIFE JavaScript Паттерн Модуль JavaScript рекурсивні функції JavaScript перевизначення функцій JavaScript hoisting JavaScript передача параметрів за значенням і за посиланням JavaScript стрілочні функції JavaScript ООП Object JavaScript ООП вкладені об'єкти і масиви в об'єктах JavaScript ООП перевірка наявності і перебір методів і властивостей JavaScript ООП об'єкти у функціях JavaScript ООП конструктори об'єктів JavaScript ООП розширення об'єктів. prototype JavaScript ООП інкапсуляція JavaScript ООП Функція як об'єкт. Методи call і apply JavaScript ООП спадкування JavaScript ООП Ключове слово this JavaScript ООП Object destructuring JavaScript ООП класи JavaScript ООП Date. Робота з датами JavaScript Об'єкт Math. математичні операції JavaScript Об'єкт Array. Робота з масивами JavaScript ООП об'єкт Number JavaScript String JavaScript String Об'єкт RegExp. Регулярні вирази JavaScript String Регулярні вирази в методах String JavaScript String Синтаксис регулярних виразів JavaScript Робота з браузером і BOM JavaScript діалогові вікна JavaScript Історія браузера. об'єкт history JavaScript об'єкт location JavaScript об'єкт navigator JavaScript таймери JavaScript DOM Введення JavaScript DOM Об'єкт document. Пошук елементів JavaScript DOM Властивості об'єкта document JavaScript DOM Об'єкт Node. Навігація по DOM JavaScript DOM Створення, додавання і видалення елементів веб-сторінки JavaScript DOM Об'єкт Element. управління елементами JavaScript DOM Зміна стилю елементів JavaScript події. Введення в обробку подій. JavaScript події обробники JavaScript події. об'єкт Event JavaScript події. поширення подій JavaScript події миші JavaScript події клавіатури JavaScript FORMS. Форми і їх елементи JavaScript FORMS. Кнопки JavaScript FORMS. текстові поля JavaScript FORMS. Прапорці та перемикачі JavaScript FORMS. Список select JavaScript JSON JavaScript зберігання даних. cookie JavaScript зберігання даних. Web Storage JavaScript Collection. Ітератори JavaScript Collection. Генератори JavaScript Collection. Множина Set JavaScript Collection. Map JavaScript Collection. WeakSet і WeakMap JavaScript AJAX. XMLHttpRequest JavaScript AJAX. Відправка даних JavaScript AJAX. Promise в Ajax-запитах

JavaScript ООП Функція як об'єкт. Методи call і apply


Функція як об'єкт. Методи call і apply

В 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("Hello World");
}

Function.prototype.program ="Hello";
 
console.log(display.program);         // Hello

Серед методів треба відзначити методи call () і apply () .

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

function add(x, y){
     
    return x + y;
}

var result = add.call(this, 3, 8);
 
console.log(result); // 11

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);
 
console.log(result); // 11

На метод call() схожий метод apply() , який також викликає функцію і в якості першого параметра також отримує об'єкт, для якого функція викликається. Тільки тепер в якості другого параметра передається масив аргументів:

function add(x, y){
     
    return x + y;
}

var result = add.apply(null, [3, 8]);
 
console.log(result); // 11

Наш партнер:
beta test mp3 playlist downloader