Якщо вас бентежить ключове слово this в JavaScript, знайте, що ви не самотні. Спочатку це бентежить усіх програмістів. Але це не означає, що вам не потрібно розібратися в цьому. Ключове слово this
використовується так часто в підручниках і в коді JavaScript, що вам потрібно в ньому розібратися. Як тільки ви освоїте ключове слово this
, ви зрозумієте, що це набагато простіше, ніж ви думали.
З цієї статті ви дізнаєтеся, що таке ключове слово this
в JavaScript, що воно робить і як його використовувати.
this
– це ключове слово, значення якого змінюється в залежності від того, як викликається функція. Є такі основні варіації, де воно може набувати різних значень:
this
в глобальному контекстіthis
в конструкторі об’єктуthis
в методі об’єктуthis
в простій функціїthis
в слухачі подій
Давайте подивимося, як this
змінюється в кожному з цих контекстів.
Коли this
викликається поза будь-якою функцією, в глобальному контексті, в браузері за замовчуванням використовується об’єкт Window
.
console.log (this); // об'єкт Window
Як правило, вам не потрібно використовувати this
в глобальному контексті, оскільки його значення тут не важливе. Давайте перейдемо до наступного контексту.
Коли ви створюєте новий екземпляр об’єкта з допомогою ключового слова new
, ключове слово this
відноситься до його примірника.
function Human(age) { this.age = age; } let ivan = new Human(22); let stepan = new Human(24); console.log(ivan); // this.age = 22 console.log(stepan); // this.age = 24
Вище в коді ivan
є екземпляром Human
. Тепер, коли б ви не посилалися на ivan
, ви випадково не отримаєте stepan
. Таким чином, встановлення this
в якості прикладу має сенс.
Давайте подивимося на тісно пов’язаний контекст далі – this
в методі об’єкту.
Методи – це позначення для функцій, які пов’язані з об’єктом. Оскільки ключове слово this
відноситься до об’єкту, ви можете використовувати методи для отримання примірника об’єкта, наприклад:
function Human(name) { return { name, getName() { return this.name; } } } const ivan = new Human('Ivan'); const stepan = new Human('Stepan'); console.log(ivan.getName()); // Ivan
У цьому об’єктному контексті ви можете бачити, що змінене значення this
дозволяє вам отримати правильний екземпляр, що є основою в об’єктно-орієнтованому програмуванні.
Давайте перейдемо до наступного контексту.
Нижче приклад простої функції:
function hello() { // say hello! }
Браузери this
в простій функції завжди встановлюють в Window
. Те ж саме вірно, навіть якщо ви викликаєте просту функцію в методі об’єкту.
На жаль, така поведінка є несподіваною для початківців. Вони очікують, що this
залишиться тим же самим в методах об’єкта.
Одним з швидких рішень є створення змінної, яка зберігає посилання на this
. Ця змінна часто називається self
або that
.
Ключове слово this
встановлюється для елемента, який викликав подію в слухачі подій:
let button = document.querySelector('button'); button.addEventListener('click', function() { console.log(this); // button })
bind
– це метод, який присутній в кожній функції. Це дозволяє вам змінити контекст ключового слова this
. Цей метод приймає будь-яку кількість аргументів і повертає пов’язану функцію.
function sayThis() { console.log(this); } const boundFunction = sayThis.bind(/* аргументи...*/);
Перший параметр, який ви передаєте в зв’язування, стає this
в пов’язаній функції. Створивши пов’язану функцію, ви можете викликати її в будь-який час:
function sayThis() { console.log(this); } const boundFunction = sayThis.bind({greeting: 'hello'}); boundFunction();
Інші параметри, які ви передаєте в bind
, будуть передані в якості аргументів вихідної функції
function sayParams(...args) { console.log(...args); } const boundFunction = sayParams.bind(null, 1, 2, 3, 4, 5); boundFunction();
Ключове слово this
є одним з найважливіших ключових слів в JavaScript. Воно використовується в багатьох JavaScript-фреймворках, тому ви повинні знати, що воно робить.
З сьогоднішньої статті ви дізналися про різні контексти, в яких this
приймає різні значення. Ви також дізналися, як змінити контекст this
за допомогою таких функцій, як зв’язування (bind
).
Це той мінімум, який вам потрібно знати про this
. Просто засвойте концепції, викладені в цій статті, і ви більше ніколи не заплутаєтеся.
Чи допомогла вам ця стаття? Якщо так, сподіваємося, що ви поділитеся нею.
Дякуємо за увагу!
Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…
Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…
Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…
Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер
Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…
Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…