JavaScript Виклик функції
Код у JavaScript function виконуватиметься, коли "щось" її викликає.
Виклик JavaScript функції
Код усередині функції не виконується, якщо функцію визначено.
Код усередині функції виконується під час виклику функції.
Поширеним є використання терміну "звернення до функції" замість "викликати функцію".
Також прийнято говорити "звертатись до функції", "запуск функції" або "виконання функції".
У цьому посібнику ми будемо використовувати виклик функції, оскільки функцію JavaScript можна викликати без звернення.
Виклик функції як функції
Наведена вище функція не належить жодному об’єкту. Але в JavaScript завжди є глобальний об’єкт за умовчанням.
У HTML стандартним глобальним об’єктом є сама сторінка HTML, тому функція вище "належить" сторінці HTML.
У браузері об’єктом сторінки є вікно браузера. Функція вище автоматично стає функцією вікна.
Примітка
Це поширений спосіб виклику функції JavaScript, але не дуже гарна практика.
Глобальні змінні, методи чи функції можуть легко спричинити конфлікти імен і помилки в глобальному об’єкті.
myFunction() та window.myFunction() - одна і та сама функція:
Приклад
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // також поверне 20
Спробуйте самі »
Що таке this?
У JavaScript ключове слово this посилається на об’єкт.
Який об’єкт залежить від того, як this викликається (використовується або називається).
Ключове слово this відноситься до різних об’єктів залежно від способу його використання:
У методі об’єкта this посилається на об’єкт. |
Окремо this стосується глобального об’єкта. |
У функції this посилається на глобальний об’єкт. |
У функції в строгому режимі this є undefined. |
У події this посилається на елемент, який отримав подію. |
Такі методи, як call(), apply() та bind() можуть відносити this до будь-якого об’єкту. |
Примітка
this не є змінною. Це ключове слово. Ви не можете змінити значення this.
Дивіться також:
Глобальний об’єкт
Коли функція викликається без власного об’єкта, значення this стає глобальним об’єктом.
У веббраузері глобальним об’єктом є вікно браузера.
Цей приклад повертає об’єкт вікна як значення this:
Приклад
let x = myFunction(); // x буде об’єктом вікна
function myFunction() {
return this;
}
Спробуйте самі »
Виклик функції як глобальної функції призводить до того, що значення this стає глобальним об’єктом.
Використання об’єкта window як змінної може легко привести до збою вашої програми.
Виклик функції як методу
У JavaScript ви можете визначити функції як методи об’єктів.
У наступному прикладі створюється об’єкт (myObject) із двома властивостями (firstName та lastName), і методом (fullName):
Приклад
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Поверне "John Doe"
Спробуйте самі »
Метод fullName є функцією. Функція належить об’єкту. myObject є власником функції.
Те, що називається this, є об’єктом, який "володіє" JavaScript кодом. У цьому випадку значення this становить myObject.
Перевірте це! Змініть метод fullName, щоб повернути значення this:
Приклад
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// Це поверне [object Object] (об’єкт власника)
myObject.fullName();
Спробуйте самі »
Виклик функції як методу об’єкта призводить до того, що значення this стає самим об’єктом.
Виклик функції за допомогою конструктора функції
Якщо виклику функції передує ключове слово new, це виклик конструктора.
Здається, ви створюєте нову функцію, але оскільки функції JavaScript є об’єктами, ви фактично створюєте новий об’єкт:
Приклад
// Це конструктор функцій:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// Це створює новий об’єкт
const myObj = new myFunction("John", "Doe");
// Це поверне "John"
myObj.firstName;
Спробуйте самі »
Виклик конструктора створює новий об’єкт. Новий об’єкт успадковує властивості та методи від свого конструктора.
Ключове слово this у конструкторі не має значення.
Значення this буде новий об’єкт, створений під час виклику функції.

