Что такое делегирование событий в JS и как это работает
Это техника, которая позволяет обрабатывать события на родительских элементах вместо на дочерних.
Мы знаем, что события всплывают вверх по DOM-дереву. То есть если вы установите обработчик события на родительском элементе, он будет вызван при срабатывании и на любом дочернем.
Вот пример, как можно это использовать:
Тут мы устанавливаем обработчик на родительский элемент и проверяем, что событие произошло именно на дочернем элементе.
#javascript #урок
Учитесь фронтенду с нами — подпишитесь 💻
Это техника, которая позволяет обрабатывать события на родительских элементах вместо на дочерних.
Мы знаем, что события всплывают вверх по DOM-дереву. То есть если вы установите обработчик события на родительском элементе, он будет вызван при срабатывании и на любом дочернем.
Вот пример, как можно это использовать:
// Получаем родительский элемент
const parentElement = document.getElementById('parentElement');
// Добавляем обработчик на родительский элемент
parentElement.addEventListener('click', function(event) {
// Проверяем, что кликнули на нужный дочерний элемент
if(event.target.classList.contains('childElement')) {
// Обрабатываем событие
console.log('Событие обработано на дочернем элементе');
}
});
Тут мы устанавливаем обработчик на родительский элемент и проверяем, что событие произошло именно на дочернем элементе.
#javascript #урок
Метод bind() в JavaScript
Простыми словами,
Давайте разберёмся на примере. Представьте, что у вас есть объект
Если мы вызовем
Но что, если мы захотим передать эту функцию в другое место? Например:
В этом случае контекст потеряется, и
Теперь функция
#урок #javascript
Простыми словами,
bind
— это инструмент, который позволяет «привязать» определённый контекст (this
) к функции.Давайте разберёмся на примере. Представьте, что у вас есть объект
user
:const user = {
name: 'Аня',
greet() {
console.log(`Привет, меня зовут ${this.name}`);
}
};
Если мы вызовем
user.greet()
, то увидим: «Привет, меня зовут Аня». Всё работает, потому что контекст (this
) указывает на объект user
.Но что, если мы захотим передать эту функцию в другое место? Например:
const greetFunc = user.greet;
greetFunc(); // Что произойдет?
В этом случае контекст потеряется, и
this
будет указывать не на user
, а на глобальный объект (или undefined
в строгом режиме). Метод bind
поможет нам решить эту проблему:const greetFuncBound = user.greet.bind(user);
greetFuncBound(); // Привет, меня зовут Аня
Теперь функция
greetFuncBound
всегда будет знать, что её контекст — это объект user
.#урок #javascript
Что такое WeakMap и WeakSet
WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. Особенность WeakMap: если объект, использованный как ключ, больше нигде не упоминается, он автоматически удаляется.
WeakSet — это коллекция, хранящая только уникальные объекты. Как и в WeakMap, если объект больше не используется, он может быть удалён автоматически.
Примеры использования:
WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. ОсобенноЧто такое Wподходит для привязки данных к объекту с автоматической очисткой, например, для кеша DOM-элементов.
#урок #javascript
Учитесь фронтенду с нами — подпишитесь 💻
WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. Особенность WeakMap: если объект, использованный как ключ, больше нигде не упоминается, он автоматически удаляется.
WeakSet — это коллекция, хранящая только уникальные объекты. Как и в WeakMap, если объект больше не используется, он может быть удалён автоматически.
Примеры использования:
let wm = new WeakMap();Что такое WeakMap и WeakSet
let obj = {};
wm.set(obj, 'значение');
console.log(wm.get(obj)); // 'значение'
obj = null; // Объект становится недоступен и может быть удалён
WeakMap — это коллекция, где ключами могут быть только объекты, а значения могут быть любого типа. ОсобенноЧто такое Wподходит для привязки данных к объекту с автоматической очисткой, например, для кеша DOM-элементов.
WeakSet
полезен для хранения множества объектов с автоматической очисткой.#урок #javascript
Сегодня поговорим о загадочном свойстве
Всё дело в прототипах. В JavaScript каждый объект может «наследовать» свойства и методы другого объекта. Этот «наследник» называется прототипом. Свойство
Например:
Теперь у объекта
#урок #javascript
Учитесь фронтенду с нами — подпишитесь 💻
__proto__
. Что это такое и почему это важно для JavaScript?Всё дело в прототипах. В JavaScript каждый объект может «наследовать» свойства и методы другого объекта. Этот «наследник» называется прототипом. Свойство
__proto__
указывает на объект, который является прототипом данного объекта.Например:
const animal = {
eats: true
};
const rabbit = {
jumps: true,
__proto__: animal
};
Теперь у объекта
rabbit
есть доступ к свойству eats
через прототип animal
. Это позволяет экономить память и добиваться мощной функциональности с минимальными усилиями. Знание прототипов и __proto__
поможет вам писать более эффективный и выразительный код.#урок #javascript
Что такое
Это метод в JavaScript, который позволяет превратить объект или массив в строку формата JSON (JavaScript Object Notation). Это бывает полезно, например, когда нужно передать данные по сети или сохранить их в локальное хранилище.
Как видите, объект превратился в строку, которую легко передавать и сохранять. Затем её можно обратно превратить в объект с помощью
Понимание работы поможет вам эффективно работать с данными на стороне клиента и сервера.
#урок #javascript #json
Учитесь фронтенду с нами — подпишитесь 💻
JSON.stringify()
Это метод в JavaScript, который позволяет превратить объект или массив в строку формата JSON (JavaScript Object Notation). Это бывает полезно, например, когда нужно передать данные по сети или сохранить их в локальное хранилище.
Пример:const user = {
name: «Alice»,
age: 25,
isStudent: true
};
const jsonString = JSON.stringify(user);
console.log(jsonString); // {"name»:"Alice»,"age»:25,"isStudent»:true}
Как видите, объект превратился в строку, которую легко передавать и сохранять. Затем её можно обратно превратить в объект с помощью
JSON.parse.
Понимание работы поможет вам эффективно работать с данными на стороне клиента и сервера.
#урок #javascript #json
Как работает атрибут `autocomplete` в HTML и зачем он нужен
Пример:
В этом примере браузер сможет предложить варианты для полей "Имя" и "Эл. почта" на основе данных, которые пользователь вводил ранее.
Значение
Этот атрибут повышает удобство пользователей, сокращая время на заполнение данных и минимизируя ошибки ввода.
#урок #html
Учитесь фронтенду с нами — подпишитесь 💻
autocomplete
— это атрибут, который можно применять к элементам форм, таким как <input>
или <form>
. Он помогает браузеру предлагать пользователю автозаполнение полей формы на основе ранее введённых данных.Пример:
<form>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" autocomplete="name">
<label for="email">Эл. почта:</label>
<input type="email» id="email» name="email" autocomplete="email">
<input type="submit» value="Отправить">
</form>
В этом примере браузер сможет предложить варианты для полей "Имя" и "Эл. почта" на основе данных, которые пользователь вводил ранее.
Значение
autocomplete
может быть как on (включено), так и off (выключено), а также иметь более конкретные значения, как в примере выше — name
, email
.Этот атрибут повышает удобство пользователей, сокращая время на заполнение данных и минимизируя ошибки ввода.
#урок #html
Что делает директива
Пример:
Без строгого режима такие ошибки могли бы остаться незамеченными и привести к неожиданным проблемам в коде.
Как включить строгий режим:
— в начале файла:
— в пределах функции:
Использовать строгий режим рекомендуется всегда, чтобы ваш код был безопаснее и поддерживал лучшие практики.
#урок #javascript
Учитесь фронтенду с нами — подпишитесь 💻
"use strict"
в JavaScript"use strict"
— это способ включить строгий режим в коде JavaScript. Он помогает сделать ваш код более безопасным и чистым, выявляя ошибки, которые в обычном режиме могли бы быть незаметны.Пример:
"use strict";
var x = 1;
delete x; // Ошибка: нельзя удалить объявленную переменную
function test() {
y = 2; // Ошибка: "y" не объявлена
}
test();
Без строгого режима такие ошибки могли бы остаться незамеченными и привести к неожиданным проблемам в коде.
Как включить строгий режим:
— в начале файла:
"use strict";
— в пределах функции:
function myFunction() { "use strict"; /* код */ }
Использовать строгий режим рекомендуется всегда, чтобы ваш код был безопаснее и поддерживал лучшие практики.
#урок #javascript
Сегодня поговорим о спред-операторе (
Спред-оператор позволяет «разложить» массив или объект на отдельные элементы. Он используется в разных контекстах: при копировании, объединении массивов и объектов, а также при передаче аргументов в функции.
Примеры:
Копирование массива:
Объединение массивов:
Копирование объекта:
Объединение объектов:
Преимущества:
— упрощает операции с массивами и объектами;
— делает код более читабельным;
— помогает избежать мутаций и побочных эффектов.
Теперь, когда вы знаете, как использовать спред-оператор, ваш код станет ещё более элегантным и эффективным!
#урок #javascript
Учитесь фронтенду с нами — подпишитесь 💻
...
) в JavaScriptСпред-оператор позволяет «разложить» массив или объект на отдельные элементы. Он используется в разных контекстах: при копировании, объединении массивов и объектов, а также при передаче аргументов в функции.
Примеры:
Копирование массива:
const originalArray = [1, 2, 3];
const copyArray = [...originalArray];
console.log(copyArray); // [1, 2, 3]
Объединение массивов:
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const combinedArray = [...array1, ...array2];
console.log(combinedArray); // [1, 2, 3, 4, 5, 6]
Копирование объекта:
const originalObject = { a: 1, b: 2 };
const copyObject = { ...originalObject };
console.log(copyObject); // { a: 1, b: 2 }
Объединение объектов:
const object1 = { a: 1, b: 2 };
const object2 = { c: 3, d: 4 };
const combinedObject = { ...object1, ...object2 };
console.log(combinedObject); // { a: 1, b: 2, c: 3, d: 4 }
Преимущества:
— упрощает операции с массивами и объектами;
— делает код более читабельным;
— помогает избежать мутаций и побочных эффектов.
Теперь, когда вы знаете, как использовать спред-оператор, ваш код станет ещё более элегантным и эффективным!
#урок #javascript
Telegram
Frontend.school() | изучаем HTML, CSS, JavaScript вместе!
Крутым фронтендером не рождаются — им становятся на канале @frontend_school!
Наш чат: @frontend_school_chat
Наша флудилка: @frontend_school_flud
Другие проекты: t.me/addlist/dIq-3zEMMugwZTgy
Мы в VK: vk.com/frontend_school
Связь: @jellyjail
Наш чат: @frontend_school_chat
Наша флудилка: @frontend_school_flud
Другие проекты: t.me/addlist/dIq-3zEMMugwZTgy
Мы в VK: vk.com/frontend_school
Связь: @jellyjail
Любите ARIA? Нет, Кипелов тут не причем
ARIA (Accessible Rich Internet Applications) — это набор атрибутов, разработанный для того, чтобы улучшить доступность веб-приложений для людей с ограниченными возможностями. Он помогает разработчикам создавать интерфейсы, которые могут быть более легко интерпретированы вспомогательными технологиями, такими как экранные читалки. Это особенно важно для людей с ограниченным зрением или моторикой.
Основные атрибуты ARIA:
1. aria-label: используется для предоставления текста этикетки для элемента.
2. aria-hidden: указывает, что элемент и его дочерние элементы недоступны для вспомогательных технологий.
3. aria-live: сообщает экранному чтецу об изменениях в содержимом, которые происходят динамически.
4. aria-expanded: указывает состояние раскрытия или сворачивания элементов интерфейса (например, аккордеоны, выпадающие списки).
5. role: Определяет роль элемента интерфейса, помогая вспомогательным технологиям понять его назначение.
Преимущества использования ARIA:
— лучшая доступность: делает ваше приложение доступным для большего круга пользователей;
— социальная ответственность: помогает соблюдать стандарты доступности и поддерживать инклюзивность;
— улучшение SEO: иногда улучшает видимость вашего контента для поисковых систем.
Использование ARIA атрибутов поможет вам создать более доступные и понятные веб-приложения для всех пользователей.
Почитать подробнее можно в этой статье: https://doka.guide/a11y/aria-intro/
#урок #html
Учитесь фронтенду с нами — подпишитесь 💻
ARIA (Accessible Rich Internet Applications) — это набор атрибутов, разработанный для того, чтобы улучшить доступность веб-приложений для людей с ограниченными возможностями. Он помогает разработчикам создавать интерфейсы, которые могут быть более легко интерпретированы вспомогательными технологиями, такими как экранные читалки. Это особенно важно для людей с ограниченным зрением или моторикой.
Основные атрибуты ARIA:
1. aria-label: используется для предоставления текста этикетки для элемента.
<button aria-label="Закрыть">X</button>
2. aria-hidden: указывает, что элемент и его дочерние элементы недоступны для вспомогательных технологий.
<div aria-hidden="true">Этот текст будет игнорироваться.</div>
3. aria-live: сообщает экранному чтецу об изменениях в содержимом, которые происходят динамически.
<div aria-live="polite">Контент будет прочитан экранным чтецом при изменении.</div>
4. aria-expanded: указывает состояние раскрытия или сворачивания элементов интерфейса (например, аккордеоны, выпадающие списки).
<button aria-expanded="false">Меню</button>
5. role: Определяет роль элемента интерфейса, помогая вспомогательным технологиям понять его назначение.
<div role="alert">Это важное сообщение!</div>
Преимущества использования ARIA:
— лучшая доступность: делает ваше приложение доступным для большего круга пользователей;
— социальная ответственность: помогает соблюдать стандарты доступности и поддерживать инклюзивность;
— улучшение SEO: иногда улучшает видимость вашего контента для поисковых систем.
Использование ARIA атрибутов поможет вам создать более доступные и понятные веб-приложения для всех пользователей.
Почитать подробнее можно в этой статье: https://doka.guide/a11y/aria-intro/
#урок #html
Дока
Введение в ARIA — Доступность — Дока
Что такое ARIA и как правильно этим пользоваться.