ВГТУ
2024-12-03
JavaScript - это высокоуровневый, интерпретируемый язык программирования, который применяется для создания интерактивных веб-страниц. В этом разделе мы рассмотрим основы JavaScript и его ключевые характеристики:
JavaScript играет ключевую роль в веб-разработке и взаимодействии с веб-страницами. Вот основные роли JavaScript в веб-разработке:
Интерактивность: JavaScript позволяет делать веб-страницы интерактивными. Это означает, что пользователи могут взаимодействовать с содержанием страницы, выполнять действия и получать мгновенные отклики. Примеры включают клики на кнопки, отправку форм, изменение содержания страницы без перезагрузки и многое другое.
Валидация форм: JavaScript используется для валидации данных, введенных пользователями в формы на веб-страницах. Это помогает предотвращать отправку неправильных данных на сервер и обеспечивать более удобный опыт пользователей.
Асинхронные запросы: JavaScript позволяет выполнять асинхронные HTTP-запросы к серверу (AJAX - Asynchronous JavaScript and XML). Это позволяет обновлять части страницы без полной перезагрузки, загружать данные с сервера без прерывания работы пользователя и создавать более быстрые и отзывчивые веб-приложения.
Манипуляция DOM: DOM (Document Object Model) представляет структуру HTML-документа в виде объектов, с которыми JavaScript может взаимодействовать. JavaScript может изменять содержимое и структуру страницы, добавлять, удалять или изменять элементы, а также обрабатывать события, происходящие на странице.
Куки и локальное хранилище: JavaScript позволяет управлять куки (cookie) и локальным хранилищем (localStorage и sessionStorage) на стороне клиента. Это используется для сохранения информации между сеансами пользователя и локального хранения данных.
Анимации: JavaScript может использоваться для создания анимаций и переходов на веб-страницах, что делает страницы более привлекательными и информативными.
Клиентская валидация: Перед отправкой данных на сервер, JavaScript может выполнять клиентскую валидацию для обнаружения ошибок или неправильно заполненных полей формы, что помогает сэкономить время пользователя и уменьшить нагрузку на сервер.
События и обработчики: JavaScript позволяет обрабатывать события, такие как клики, наведение мыши, нажатия клавиш и другие пользовательские действия. Вы можете назначать обработчики событий для реагирования на эти события и выполнять определенные действия.
Динамическое обновление данных: JavaScript может загружать данные с сервера и обновлять их на странице без перезагрузки. Это особенно полезно для приложений, где данные постоянно меняются.
JavaScript можно классифицировать по разным критериям. Вот несколько важных аспектов классификации:
<script>
, загружен внешними скриптами, выполнен в консоли браузера, а также на сервере при использовании Node.js.myVar
и myvar
считаются разными.Первая программа на JavaScript:
Интеграция в HTML:
<script>
.Однострочные комментарии начинаются с двойной косой черты //
. Например:
Многострочные комментарии заключаются в /*
и */
и могут включать несколько строк:
Переменные - это основной элемент программирования, в том числе и в JavaScript. Они используются для хранения данных и значений, которые могут быть использованы в вашем коде. В JavaScript, существуют три способа объявления переменных: var
, let
, и const
. Давайте рассмотрим каждый из них:
var
:
var
было стандартным способом объявления переменных в JavaScript до появления let
и const
.var
, имеют область видимости в пределах функции (если они объявлены внутри функции) или имеют глобальную область видимости (если объявлены за пределами функции).Пример использования var
:
let
:
let
было введено в ECMAScript 6 (ES6) и стало рекомендуемым способом объявления переменных.let
, имеют блочную область видимости, что означает, что они видимы только в блоке кода, в котором они были объявлены.Пример использования let
:
const
:
const
также было введено в ES6 и используется для объявления переменных с постоянным (константным) значением.const
, должны быть инициализированы при объявлении и не могут быть переопределены или переобъявлены.Пример использования const
:
При выборе, какую форму объявления переменных использовать, рекомендуется предпочитать let
и const
, так как они предоставляют более строгие правила области видимости и могут помочь избежать некоторых ошибок в коде. Важно выбирать подходящий тип переменной в зависимости от того, будет ли значение переменной изменяться или оставаться постоянным.
JavaScript поддерживает разнообразные типы данных, которые используются для хранения и манипулирования информацией в вашем коде. Вот основные типы данных в JavaScript:
Числовой тип данных используется для хранения чисел, как целых, так и с плавающей точкой.
Примеры:
Строки представляют текстовую информацию и могут быть заключены в одинарные или двойные кавычки.
Примеры:
Булевы значения представляют истину (true
) или ложь (false
).
Они часто используются в условных операторах.
Примеры:
Массивы используются для хранения упорядоченных списков значений.
Они могут содержать элементы разных типов данных.
Примеры:
Объекты используются для группировки ключей (свойств) и значений.
Они представляют сложные структуры данных и используются для описания объектов в реальном мире.
Пример:
null
представляет отсутствие значения.
undefined
указывает на то, что переменная объявлена, но ей не присвоено значение.
Примеры:
В JavaScript переменные могут содержать разные типы данных, и тип данных переменной может изменяться в процессе выполнения программы. Это позволяет разрабатывать гибкий и динамичный код.
В JavaScript операторы используются для выполнения различных операций над данными, выполнения арифметических и логических вычислений, сравнения значений и других манипуляций. Вот некоторые основные операторы в JavaScript:
Арифметические операторы:
+
: Сложение-
: Вычитание*
: Умножение/
: Деление%
: Остаток от деления (модуль)**
: Возведение в степень (ES6)Примеры:
Операторы присваивания:
=
: Присваивание значения переменной.Пример:
Инкремент и декремент:
++
: Инкремент (увеличение на 1)--
: Декремент (уменьшение на 1)Пример:
Операторы сравнения:
==
: Равенство (с преобразованием типов, например, "5" == 5
вернет true
)===
: Строгое равенство (без преобразования типов)!=
: Неравенство (с преобразованием типов)!==
: Строгое неравенство>
: Больше<
: Меньше>=
: Больше или равно<=
: Меньше или равноПример:
Логические операторы:
&&
: Логическое “и” (возвращает true
, если оба операнда true
)||
: Логическое “или” (возвращает true
, если хотя бы один операнд true
)!
: Логическое “не” (инвертирует значение)Пример:
Тернарный оператор:
условие ? значение_если_истина : значение_если_ложь
Пример:
Операторы строк:
+
: Конкатенация (объединение) строк+=
: Добавление к строкеПример:
Условные операторы в JavaScript позволяют выполнять разные блоки кода в зависимости от условий. Они часто используются для принятия решений и управления ходом выполнения программы. Вот основные условные операторы в JavaScript:
if
: Оператор if
позволяет выполнить блок кода, если указанное условие истинно.
Пример:
else
: Оператор else
используется в паре с if
и выполняет блок кода, если условие в if
ложно.
Пример:
else if
: Оператор else if
позволяет проверить дополнительное условие, если предыдущие условия были ложными.
Пример:
Тернарный оператор (Conditional (Ternary) Operator): Тернарный оператор позволяет сократить условное выражение до одной строки.
Пример:
switch
: Оператор switch
позволяет сравнивать выражение со списком вариантов и выполнять блок кода, соответствующий совпадающему варианту.
Пример:
Условные операторы позволяют создавать гибкий и контролируемый поток выполнения кода, основанный на различных условиях и значениях переменных.
Циклы в JavaScript позволяют выполнять повторяющиеся операции или блоки кода. Они полезны, когда вам нужно многократно выполнить одни и те же действия. Вот основные виды циклов в JavaScript:
Цикл for
: Цикл for
предоставляет мощный способ для выполнения повторяющихся действий. Он состоит из трех частей: инициализации, условия и обновления.
Пример:
Цикл while
: Цикл while
выполняет блок кода, пока указанное условие истинно.
Пример:
Цикл do...while
: Цикл do...while
похож на while
, но сначала выполняет блок кода, а затем проверяет условие.
Пример:
Цикл for...of
: Цикл for...of
используется для перебора элементов в итерируемых объектах, таких как массивы.
Пример:
Цикл for...in
: Цикл for...in
используется для перебора свойств объекта.
Пример:
Цикл forEach
(для массивов): Метод forEach
предоставляет удобный способ перебора элементов массива и выполнения функции обратного вызова для каждого элемента.
Пример:
Циклы позволяют автоматизировать выполнение операций, которые должны выполняться многократно, и сделать ваш код более эффективным и компактным.
Функции являются основным строительным блоком JavaScript и позволяют организовать код в многократно используемые блоки, что делает код более читаемым и поддерживаемым. Вот как объявлять и использовать функции в JavaScript:
Для объявления функции в JavaScript используется ключевое слово function
, за которым следует имя функции, список параметров (если они есть), и блок кода, который определяет, что функция выполняет. Вот общий синтаксис объявления функции:
Вот подробное объяснение каждой части объявления функции:
function
: Ключевое слово, которое указывает, что вы объявляете функцию.
имя_функции
: Имя функции, которое вы придумываете. Имя функции должно быть допустимой идентификаторной строкой. Это уникальное имя, по которому вы будете вызывать функцию.
(параметр1, параметр2, ...)
: Это список параметров, которые функция принимает. Параметры - это переменные, которые используются внутри функции. Они являются входными данными, которые функция может использовать при выполнении.
{}
: Это блок кода функции, заключенный в фигурные скобки {}
. В этом блоке кода определяются действия, которые функция выполняет при вызове.
Пример объявления и вызова функции:
function приветствие(имя) {
console.log("Привет, " + имя + "!");
}
// Вызов функции с аргументом "Иван"
приветствие("Иван"); // Выведет "Привет, Иван!"
Важно отметить, что функции могут не иметь параметров и/или не возвращать значения (с использованием оператора return
). Они также могут быть вызваны многократно с разными аргументами, что делает их полезными для выполнения повторяющихся действий в коде.
Вызов функции в JavaScript означает выполнение кода, определенного внутри этой функции. Чтобы вызвать функцию, вы используете ее имя, а затем передаете необходимые аргументы (если функция ожидает их) в круглых скобках. Вот как это делается:
Где: - имя_функции
- это имя функции, которую вы хотите вызвать. - аргумент1, аргумент2, ...
- это значения, которые передаются функции как аргументы (если функция ожидает аргументы).
Примеры вызова функции:
function приветствие(имя) {
console.log("Привет, " + имя + "!");
}
приветствие("Иван"); // Вызов функции с аргументом "Иван"
приветствие("Мария"); // Вызов функции с аргументом "Мария"
В этом примере функция приветствие
вызывается дважды с разными аргументами, и она выводит приветственное сообщение с именем, переданным как аргумент.
Обратите внимание, что если функция не ожидает аргументов, вы все равно должны использовать пустые круглые скобки:
function поздравление() {
console.log("Поздравляем!");
}
поздравление(); // Вызов функции без аргументов
Вызов функций позволяет вам многократно использовать один и тот же блок кода в разных частях вашей программы, что делает код более организованным и уменьшает дублирование кода.
Возврат значения из функции в JavaScript выполняется с помощью оператора return
. Этот оператор позволяет функции вернуть какое-либо значение обратно в вызывающую часть программы. Вот как он используется:
function имя_функции(параметр1, параметр2, ...) {
// Блок кода, выполняемый функцией
// ...
return значение;
}
Где: - имя_функции
- имя функции. - параметр1, параметр2, ...
- параметры функции (если они есть). - значение
- значение, которое функция возвращает.
Пример функции с оператором return
:
В этом примере функция добавить
принимает два аргумента a
и b
, выполняет операцию сложения и возвращает результат с использованием оператора return
.
Вы можете использовать возвращенное значение, сохраняя его в переменной, передавая его другой функции или выполняя другие операции с ним. Важно отметить, что функция может возвращать любой тип данных, включая числа, строки, объекты и другие функции.
Пример использования возвращенного значения:
function удвоить(число) {
return число * 2;
}
let результат1 = удвоить(4); // результат1 равен 8
let результат2 = удвоить(10); // результат2 равен 20
console.log(результат1, результат2);
Оператор return
также может использоваться для завершения выполнения функции в середине блока кода. Как только return
выполнен, функция завершает свою работу и возвращает значение, пропуская остаток кода внутри функции.
Анонимные функции (или функциональные выражения) - это функции, которые не имеют имени и обычно объявляются прямо внутри выражения или как часть другого выражения. Они часто используются в JavaScript для создания функций на месте, которые могут быть переданы как аргументы другим функциям или сохранены в переменных.
Вот как объявляются анонимные функции:
Где: - имя_переменной
- это имя переменной, в которую сохраняется анонимная функция. Эта переменная становится ссылкой на функцию. - параметр1, параметр2, ...
- это параметры функции (если они есть). - // Тело функции
- это блок кода, который определяет операции, выполняемые функцией.
Пример анонимной функции, сохраненной в переменной:
let умножить = function(a, b) {
return a * b;
};
let результат = умножить(4, 6); // результат равен 24
Анонимные функции также могут быть использованы как аргументы в других функциях. Это особенно полезно при работе с функциональным программированием и функциями высшего порядка.
Пример использования анонимной функции как аргумента:
let числа = [1, 2, 3, 4, 5];
// Используем метод массива forEach с анонимной функцией
числа.forEach(function(число) {
console.log(число);
});
Анонимные функции являются удобным способом определения функций на месте, когда вам не требуется повторное использование функции в других частях вашего кода.
Стрелочные функции (Arrow Functions) - это синтаксическое усовершенствование, введенное в ECMAScript 6 (ES6), которое предоставляет более краткий способ определения функций в JavaScript. Они особенно полезны для создания анонимных функций и обеспечивают короткий и читаемый синтаксис. Вот как объявляются и используются стрелочные функции:
Синтаксис стрелочной функции:
Где: - параметры
- это список параметров функции, заключенных в круглые скобки, как в обычных функциях. - выражение
- это выражение, которое возвращает значение функции. Если тело функции содержит только одно выражение, то {}
можно опустить, и значение будет автоматически возвращено.
Примеры стрелочных функций:
// Стрелочная функция без параметров
let привет = () => {
console.log("Привет, мир!");
};
// Стрелочная функция с одним параметром
let удвоить = x => x * 2;
// Стрелочная функция с несколькими параметрами
let сложить = (a, b) => a + b;
// Стрелочная функция с одним выражением (без явного return)
let квадрат = x => x * x;
// Использование стрелочной функции внутри метода массива
let числа = [1, 2, 3, 4, 5];
числа.forEach(число => console.log(число));
Основные особенности стрелочных функций:
Если функция принимает только один параметр, вы можете опустить круглые скобки вокруг параметра, как в примере удвоить
.
Если функция состоит из одного выражения, фигурные скобки и ключевое слово return
можно опустить, как в примере квадрат
.
Стрелочные функции сохраняют значение this
из окружающего контекста, что может быть полезным при работе с колбэками и обработчиками событий.
Стрелочные функции удобны, когда вам не требуется сложная логика и вам нужна краткая запись для функций. Однако их следует использовать осторожно, так как они не подходят для всех сценариев и не поддерживают создание функций-конструкторов и не имеют собственного this
.
Область видимости функций (или контекст выполнения) в JavaScript определяет, где и какие переменные могут быть использованы в вашем коде. JavaScript имеет два основных типа области видимости:
Глобальная область видимости (Global Scope): Переменные, объявленные вне всех функций, находятся в глобальной области видимости. Это означает, что такие переменные могут быть использованы в любой части вашего кода, включая внутри функций. Переменные, объявленные в глобальной области видимости, доступны во всех функциях и блоках кода.
Пример:
Локальная область видимости (Local Scope): Переменные, объявленные внутри функций или блоков кода, находятся в их локальной области видимости. Это означает, что такие переменные могут быть использованы только в пределах той функции или блока, в которых они были объявлены. Они недоступны за пределами этой функции или блока.
Пример:
Лексическая область видимости (также известная как статическая область видимости) - это особенность языков программирования, включая JavaScript, которая определяет, какие переменные видимы для функций и блоков кода на основе их расположения в исходном коде, а не на основе времени выполнения. Это означает, что область видимости переменных определяется структурой кода и не меняется во время выполнения программы.
Пример лексической области видимости:
let глобальная_переменная = "Глобальная";
function внешняя_функция() {
let локальная_переменная = "Локальная";
function внутренняя_функция() {
console.log(глобальная_переменная); // Доступ к глобальной переменной
console.log(локальная_переменная); // Доступ к локальной переменной
}
внутренняя_функция();
}
внешняя_функция();
В этом примере у функции внутренняя_функция
есть доступ к глобальной переменной глобальная_переменная
, а также к локальной переменной локальная_переменная
, потому что они находятся в разных областях видимости, определенных лексически. Область видимости функции определяется местом её объявления, и вложенные функции имеют доступ к переменным из внешних функций (замыкания).
Лексическая область видимости способствует предсказуемости и читаемости кода, так как она позволяет понять, какие переменные доступны внутри функции, просто просматривая код. Это также позволяет избегать конфликтов имен переменных.
Следует отметить, что JavaScript использует лексическую область видимости, и это означает, что переменные, объявленные внутри блока кода (например, условные операторы или циклы), видны только в этом блоке и его подблоках. Это называется блочной областью видимости и было введено в стандарте ECMAScript 6 (ES6) с использованием ключевого слова let
.
Замыкание (closure) - это важное понятие в JavaScript, которое описывает способность функции сохранять доступ к переменным из внешней области видимости, даже после завершения выполнения этой функции. Замыкания возникают благодаря лексической области видимости, и они играют важную роль в создании чистых и безопасных функций, а также в решении некоторых задач.
Вот пример, как создаются и используются замыкания:
function создатьСчетчик() {
let счетчик = 0;
function увеличить() {
счетчик++;
console.log(счетчик);
}
return увеличить;
}
let мойСчетчик = создатьСчетчик();
мойСчетчик(); // Выводит 1
мойСчетчик(); // Выводит 2
В этом примере функция создатьСчетчик
создает и возвращает другую функцию увеличить
, которая имеет доступ к переменной счетчик
из внешней области видимости. Когда мы вызываем создатьСчетчик
, она создает новую локальную область видимости для переменной счетчик
, и затем возвращает функцию увеличить
, которая является замыканием. Каждый раз, когда мы вызываем мойСчетчик()
, она увеличивает значение счетчика
и выводит его.
Замыкания полезны, когда вам нужно сохранить состояние или скрыть данные от глобальной области видимости, что способствует безопасности и предотвращает конфликты имен. Они также используются для решения различных задач, таких как обработка событий, создание приватных переменных в объектах и реализация функций обратного вызова (callback functions).
Важно помнить, что замыкания могут потреблять память, поэтому следует использовать их с умом и не злоупотреблять созданием большого количества ненужных замыканий.
Рекурсия - это концепция в программировании, когда функция вызывает саму себя для решения задачи. Рекурсия является мощным инструментом и часто используется для решения задач, которые могут быть разбиты на более мелкие подзадачи. В JavaScript, как и в других языках, рекурсия реализуется следующим образом:
Определите базовый случай (base case): Это случай, в котором рекурсивная функция завершает свою работу и возвращает результат, без вызова самой себя. Без базового случая рекурсия может стать бесконечной.
Определите рекурсивный случай (recursive case): Это случай, в котором рекурсивная функция вызывает саму себя с другими аргументами для решения подзадачи.
Пример рекурсивной функции для вычисления факториала числа:
function факториал(n) {
// Базовый случай: если n равно 0, возвращаем 1
if (n === 0) {
return 1;
}
// Рекурсивный случай: вызываем факториал с меньшим значением n
else {
return n * факториал(n - 1);
}
}
let результат = факториал(5); // результат равен 120
В этом примере базовый случай - это когда n
равно 0, и функция возвращает 1. В рекурсивном случае, функция вызывает саму себя с аргументом n - 1
, чтобы постепенно уменьшать значение n
до достижения базового случая.
Рекурсия может быть мощным способом решения задач, но её следует использовать осторожно. Неправильно написанная рекурсия может вызвать переполнение стека вызовов (stack overflow), и, поэтому, важно иметь хороший базовый случай и убедиться, что рекурсивные вызовы сходятся к базовому случаю.
Массивы (Arrays) в JavaScript представляют собой структуры данных, предназначенные для хранения и управления списками значений. Они позволяют хранить несколько значений в одной переменной. Вот как создавать и работать с массивами:
Для создания массива в JavaScript используются квадратные скобки []
. В массиве можно хранить различные типы данных, включая числа, строки, объекты и другие массивы. Вот несколько способов создания массива:
Пустой массив:
Вы можете создать пустой массив, который будет содержать ноль элементов, следующим образом:
Массив с элементами:
Чтобы создать массив с элементами, разделите элементы запятыми внутри квадратных скобок:
Создание массива с помощью конструктора:
JavaScript также предоставляет конструктор Array
для создания массивов. Вы можете создать массив с помощью new Array()
и передать в него начальные элементы:
Однако использование квадратных скобок более распространено и читаемо.
Пустой массив заданной длины:
Можно создать пустой массив заданной длины, используя конструктор Array
и указав количество элементов:
В этом случае массив будет иметь длину 3, но его элементы будут undefined
. Это может быть полезно, если вы планируете заполнять массив позже.
Для доступа к элементам массива в JavaScript используются индексы. Индексы начинаются с 0 для первого элемента. Вот как можно получить доступ к элементам массива:
Используя квадратные скобки и индекс:
Вы можете получить элемент массива, указав его индекс в квадратных скобках. Например:
Используя переменную или выражение в качестве индекса:
Индекс может быть переменной или выражением. Например:
Используя отрицательные индексы:
Массивы в JavaScript поддерживают отрицательные индексы, которые начинаются с конца массива. Например:
let числа = [1, 2, 3, 4, 5];
console.log(числа[-1]); // Выведет последний элемент (5)
console.log(числа[-3]); // Выведет третий элемент с конца (3)
Однако отрицательные индексы не поддерживаются во всех языках программирования, и их использование может быть путающим.
Используя методы массива:
Методы массива, такие как indexOf
, find
, filter
и другие, позволяют искать элементы по их значению или выполнить различные операции над элементами.
Примечание: Если индекс, который вы указали, находится вне диапазона допустимых индексов массива, то будет возвращено undefined
. Будьте осторожны и проверяйте, что индекс находится в пределах длины массива, чтобы избежать ошибок.
Важно помнить, что массивы в JavaScript могут содержать элементы различных типов данных, и их индексы являются целыми числами.
Чтобы изменить элементы в массиве JavaScript, вы можете обратиться к элементу по его индексу и присвоить новое значение. Вот как это делается:
let числа = [1, 2, 3, 4, 5];
// Изменить первый элемент (индекс 0)
числа[0] = 10; // Теперь массив будет [10, 2, 3, 4, 5]
// Изменить третий элемент (индекс 2)
числа[2] = 30; // Теперь массив будет [10, 2, 30, 4, 5]
Вы можете присваивать новые значения элементам массива, используя индексы. Обратите внимание, что индексы начинаются с 0 для первого элемента, как в большинстве языков программирования.
Вы также можете изменять элементы массива, используя переменные или выражения:
let числа = [1, 2, 3, 4, 5];
let индекс = 2;
// Изменить элемент с использованием переменной для индекса
числа[индекс] = 30; // Теперь массив будет [1, 2, 30, 4, 5]
// Изменить элемент с использованием арифметического выражения для индекса
числа[индекс + 1] = 40; // Теперь массив будет [1, 2, 30, 40, 5]
Изменение элементов массива полезно при обновлении данных или при выполнении различных операций над элементами массива.
Для добавления и удаления элементов из массива в JavaScript существуют различные методы и операции. Вот некоторые из них:
Метод push
:
Метод push
добавляет один или несколько элементов в конец массива и возвращает новую длину массива:
Метод unshift
:
Метод unshift
добавляет один или несколько элементов в начало массива и возвращает новую длину массива:
Индекс вне диапазона:
Просто присвойте значение по индексу, который находится за пределами текущей длины массива, чтобы добавить элемент:
Метод pop
:
Метод pop
удаляет последний элемент из массива и возвращает его значение:
Метод shift
:
Метод shift
удаляет первый элемент из массива и возвращает его значение:
Метод splice
:
Метод splice
позволяет удалять элементы из массива по индексу и добавлять новые элементы:
Оператор delete
:
Оператор delete
удаляет элемент по индексу и оставляет ячейку в массиве, но со значением undefined
:
Обратите внимание, что методы pop
, shift
, и splice
изменяют исходный массив, а методы push
и unshift
возвращают новую длину массива после добавления элементов. Выберите метод, который соответствует вашим потребностям при работе с массивами.
В JavaScript, для получения длины массива (количества элементов) вы можете использовать свойство length
. Вот как это делается:
let числа = [1, 2, 3, 4, 5];
let длина = числа.length; // Получить длину массива
console.log(длина); // Выведет 5, так как массив содержит 5 элементов
Свойство length
возвращает целое число, равное количеству элементов в массиве. Обратите внимание, что оно указывает на индекс следующего пустого элемента, если в массиве есть пустые ячейки. Например:
let числа = [1, 2, 3];
числа[5] = 6;
console.log(числа.length); // Выведет 6, так как следующий пустой индекс после 3 равен 5
Благодаря свойству length
, вы можете легко определить, сколько элементов содержит ваш массив и использовать это значение в циклах или для других операций над массивом.
Перебор массива (итерация) является часто используемой операцией при работе с массивами в JavaScript. Вы можете перебирать элементы массива и выполнять различные операции с ними. Вот несколько способов для перебора элементов массива:
for
:for...of
:forEach
:map
:let числа = [1, 2, 3, 4, 5];
let новыйМассив = числа.map(function(число) {
return число * 2;
});
console.log(новыйМассив);
filter
:let числа = [1, 2, 3, 4, 5];
let фильтрованныйМассив = числа.filter(function(число) {
return число % 2 === 0;
});
console.log(фильтрованныйМассив);
reduce
:let числа = [1, 2, 3, 4, 5];
let сумма = числа.reduce(function(аккумулятор, число) {
return аккумулятор + число;
}, 0);
console.log(сумма);
for...in
(не рекомендуется для массивов):В большинстве случаев, использование методов forEach
, map
, filter
, и reduce
является более удобным и читаемым способом для перебора массивов, особенно если вам нужно выполнить какие-то операции над элементами. Выберите наиболее подходящий метод в зависимости от вашей задачи и стиля кодирования.
В JavaScript строки (Strings) представляют собой последовательности символов, которые используются для представления текстовой информации. Строки могут содержать буквы, цифры, специальные символы и пробелы. Вот как работать со строками в JavaScript:
Использование двойных кавычек:
Использование одинарных кавычек:
Использование обратных кавычек (шаблонные строки) для создания строк с интерполяцией:
Для определения длины строки используйте свойство length
:
Символы в строке можно получить по их индексу, начиная с 0:
let строка = "Hello";
let первыйСимвол = строка[0]; // Получить первый символ "H"
let второйСимвол = строка[1]; // Получить второй символ "e"
Строки можно объединять (конкатенировать) с использованием оператора +
:
let строка1 = "Hello";
let строка2 = " World";
let результат = строка1 + строка2; // Результат: "Hello World"
JavaScript также предоставляет ряд методов для работы с строками, таких как:
charAt(index)
: Возвращает символ по указанному индексу.
substring(startIndex, endIndex)
: Возвращает подстроку, начиная с startIndex
и заканчивая endIndex
, не включая последний символ.
slice(startIndex, endIndex)
: Аналогичен substring
, но может принимать отрицательные индексы, считая с конца строки.
toUpperCase()
: Преобразует строку в верхний регистр.
toLowerCase()
: Преобразует строку в нижний регистр.
trim()
: Удаляет пробелы и пробельные символы с начала и конца строки.
split(delimiter)
: Разделяет строку на массив подстрок с помощью указанного разделителя.
indexOf(substring)
: Возвращает индекс первого вхождения подстроки в строку.
lastIndexOf(substring)
: Возвращает индекс последнего вхождения подстроки в строку.
replace(search, replace)
: Заменяет первое вхождение search
на replace
.
replace(/регулярное_выражение/g, replace)
: Заменяет все вхождения, соответствующие регулярному выражению.
startsWith(prefix)
: Проверяет, начинается ли строка с указанного префикса.
endsWith(suffix)
: Проверяет, заканчивается ли строка указанным суффиксом.
includes(substring)
: Проверяет, содержит ли строка указанную подстроку.
Примеры использования этих методов:
const текст = "Это пример строки";
console.log(текст.charAt(4)); // "п"
console.log(текст.substring(5, 12)); // "пример с"
console.log(текст.toUpperCase()); // "ЭТО ПРИМЕР СТРОКИ"
console.log(текст.indexOf("строка")); // 13
console.log(текст.startsWith("Это")); // true
console.log(текст.endsWith("строка")); // true
Строки можно сравнивать с использованием операторов сравнения, таких как ==
, ===
, <
, >
, <=
, >=
. Сравнение происходит на основе лексикографического (алфавитного) порядка.
let строка1 = "apple";
let строка2 = "banana";
let результат = строка1 < строка2; // Результат: true (потому что "apple" идет раньше чем "banana" в алфавитном порядке)
Строки играют важную роль в JavaScript и используются для работы с текстом, обработки входных данных и многих других задач.
Исключения и обработка ошибок в JavaScript позволяют контролировать и обрабатывать ситуации, когда код выполняется с ошибками. Ошибки могут возникнуть, например, при попытке доступа к несуществующей переменной или при вызове функции с недопустимыми аргументами. JavaScript предоставляет механизмы для обнаружения и обработки таких ошибок.
Вот как работать с исключениями и обработкой ошибок в JavaScript:
Использование оператора throw
:
Вы можете явно выбросить исключение с помощью оператора throw
. Это может быть объект ошибки или строка:
Или:
Использование объекта ошибки:
Часто рекомендуется использовать объект Error
или его подклассы, чтобы явно представить ошибку:
Инструкция try...catch
:
Инструкция try...catch
используется для отлова и обработки ошибок. Код, который может вызвать ошибку, помещается в блок try
, а обработчик ошибки в блок catch
. Если ошибка происходит в блоке try
, выполнение кода переходит в блок catch
, где вы можете обработать ошибку:
Инструкция try...catch...finally
:
Вы также можете использовать блок finally
после блока catch
, который выполняется независимо от того, была ошибка или нет:
Глобальный объект window.onerror
:
Вы также можете установить обработчик глобальных ошибок с помощью объекта window.onerror
, который будет вызываться для всех неотловленных ошибок в вашем приложении.
Обработка ошибок важна для обеспечения более надежной работы вашего JavaScript-кода. Это позволяет избежать краха приложения из-за неожиданных ошибок и обеспечить более информативное сообщение об ошибке для разработчиков и пользователей.
DOM, или Document Object Model (Объектная Модель Документа), представляет собой структуру, которая представляет веб-страницу в виде древовидной иерархии объектов. Каждый элемент веб-страницы, такой как HTML-теги, атрибуты и текстовые узлы, представлен в DOM как объект. DOM позволяет программно взаимодействовать с веб-страницей, изменять ее содержимое и структуру, а также реагировать на события, такие как клики мышью и нажатия клавиш.
Вот некоторые ключевые концепции и возможности DOM:
DOM представляет веб-страницу как древовидную иерархию элементов. Корнем этой иерархии является объект document
, который представляет весь HTML-документ. Элементы страницы, такие как div
, p
, a
, span
, и другие, являются узлами этой иерархии.
Вы можете получать доступ к элементам в DOM с помощью JavaScript, используя методы, свойства и селекторы. Например:
document.getElementById("идентификатор")
: Получить элемент по его идентификатору.document.querySelector("селектор")
: Получить первый элемент, соответствующий селектору CSS.document.getElementsByClassName("класс")
: Получить все элементы с указанным классом.document.getElementsByTagName("тег")
: Получить все элементы с указанным тегом.element.querySelector("селектор")
: Получить первый подэлемент указанного элемента.С помощью DOM вы можете добавлять, изменять и удалять элементы и их содержимое. Например:
document.createElement("тег")
: Создать новый элемент.element.appendChild(дочернийЭлемент)
: Добавить дочерний элемент в указанный элемент.element.innerHTML = "новый текст"
: Установить HTML-содержимое элемента.element.setAttribute("атрибут", "значение")
: Установить значение атрибута элемента.DOM позволяет регистрировать обработчики событий для элементов. Вы можете реагировать на события, такие как клики, наведение курсора, нажатие клавиш и другие. Например:
element.addEventListener("click", функция)
: Регистрация обработчика события.DOM предоставляет методы для навигации по дереву элементов, такие как parentElement
, childNodes
, nextSibling
, previousSibling
и многие другие.
Вы можете изменять стили элементов, используя свойство style
объекта элемента. Например:
DOM является важной частью веб-разработки и используется для создания интерактивных веб-приложений, изменения содержимого страницы динамически и манипуляции с элементами. Он позволяет программистам создавать богатые пользовательские интерфейсы и взаимодействовать с веб-страницей с использованием JavaScript.
Обработка событий в JavaScript позволяет реагировать на действия пользователя, такие как клики мышью, нажатия клавиш, перемещения курсора и другие события веб-страницы. События являются важной частью веб-разработки и позволяют делать интерактивные веб-приложения. Вот как обрабатывать события в JavaScript:
Для добавления обработчика события к элементу HTML вы можете использовать метод addEventListener
. Этот метод принимает два аргумента: тип события и функцию-обработчик. Пример:
Чтобы удалить обработчик события, вы можете использовать метод removeEventListener
. Этот метод также принимает тип события и функцию-обработчик. Однако для удаления обработчика необходимо передать ту же функцию-обработчик, которая была использована при добавлении.
Когда событие происходит, браузер создает объект события, который содержит информацию о событии. Обработчики событий могут получить доступ к этому объекту. Например, для получения координат клика мыши на странице:
События в JavaScript могут всплывать (подниматься) от вложенных элементов к корню документа. Это может повлиять на порядок обработки событий. Вы можете использовать метод stopPropagation
объекта события, чтобы предотвратить всплытие.
Вы также можете добавить обработчики событий напрямую в атрибутах HTML-элементов, таких как onclick
, onmouseover
, и так далее:
Существует множество типов событий, таких как click
, mousedown
, mouseup
, keydown
, keyup
, mouseover
, mouseout
и другие. Выбор правильного типа события зависит от того, какое действие вы хотите обработать.
Делегирование событий - это прием, при котором обработчик события устанавливается на общего родителя для группы элементов. Это позволяет эффективно обрабатывать события для большого числа элементов.
let список = document.getElementById("список");
список.addEventListener("click", function(event) {
if (event.target.tagName === "LI") {
// Обработка клика по элементу списка
console.log("Вы нажали на элемент: " + event.target.textContent);
}
});
Обработка событий играет важную роль в разработке веб-приложений, и умение правильно использовать обработчики событий является неотъемлемой частью навыков веб-разработчика.
Асинхронное выполнение кода в JavaScript позволяет выполнять операции, которые могут занять продолжительное время, не блокируя основной поток выполнения. Это особенно важно в веб-разработке, где асинхронные операции могут включать в себя загрузку данных из сети, обработку событий пользователя и другие долгие операции, которые не должны замедлять работу приложения. Вот как работать с асинхронным кодом в JavaScript:
Колбеки - это функции, которые передаются как аргументы другим функциям и вызываются после завершения определенных операций. Например, при выполнении асинхронных операций, таких как загрузка данных с сервера, вы можете передать функцию-колбек, которая будет вызвана после завершения операции.
function загрузитьДанные(успешно, неуспешно) {
if (успешно) {
// Обработка успешного запроса
успешно(данные);
} else {
// Обработка ошибки
неуспешно(ошибка);
}
}
загрузитьДанные(
function(данные) {
console.log("Данные загружены успешно:", данные);
},
function(ошибка) {
console.error("Произошла ошибка:", ошибка);
}
);
Промисы - это современный способ управления асинхронным кодом. Промисы представляют собой объекты, которые предоставляют более читаемый и управляемый способ обработки асинхронных операций.
function загрузитьДанные() {
return new Promise(function(resolve, reject) {
if (успешно) {
// Обработка успешного запроса
resolve(данные);
} else {
// Обработка ошибки
reject(ошибка);
}
});
}
загрузитьДанные()
.then(function(данные) {
console.log("Данные загружены успешно:", данные);
})
.catch(function(ошибка) {
console.error("Произошла ошибка:", ошибка);
});
Асинхронные функции - это синтаксический сахар, предоставленный ECMAScript 2017 (ES8), который упрощает работу с промисами. Они позволяют писать асинхронный код так, как будто он синхронный.
async function загрузитьДанные() {
try {
let данные = await fetch("url");
console.log("Данные загружены успешно:", данные);
} catch (ошибка) {
console.error("Произошла ошибка:", ошибка);
}
}
загрузитьДанные();
Асинхронное выполнение позволяет улучшить отзывчивость приложений и обрабатывать долгие операции без блокировки основного потока выполнения. Это важный аспект веб-разработки и разработки приложений, особенно при работе с сетью и вводом-выводом.
JavaScript - это язык программирования, который поддерживает объектно-ориентированное программирование (ООП). В объектно-ориентированном программировании основной упор делается на объекты, которые являются экземплярами классов и имеют свойства и методы.
В JavaScript всё является объектами. Даже базовые типы данных, такие как числа и строки, могут иметь методы и свойства, так как они наследуют от объектов.
Объекты - это одна из основных концепций в JavaScript. Они представляют собой составные структуры данных, которые могут содержать переменные (свойства) и функции (методы) для организации и работы с данными. Вот основные аспекты объектов в JavaScript:
Литеральная нотация объекта: Самый простой способ создать объект - использовать литералы объекта, заключая свойства и их значения в фигурные скобки.
Создание объекта с помощью конструктора: Можно создать объект с использованием конструктора Object()
.
Свойства - это переменные, которые хранят данные в объекте. Свойства объекта могут быть доступны с использованием точечной нотации или квадратных скобок.
Методы - это функции, которые хранятся в объекте и могут выполнять действия. Методы вызываются так же, как и функции, но они находятся в контексте объекта.
let пользователь = {
имя: "Иван",
приветствие: function() {
console.log("Привет, меня зовут " + this.имя);
}
};
пользователь.приветствие(); // "Привет, меня зовут Иван"
Вы можете удалить свойство из объекта, используя оператор delete
.
Свойства объектов можно перебирать с помощью цикла for...in
или методов Object.keys()
, Object.values()
и Object.entries()
.
Объекты могут содержать другие объекты в качестве свойств. Это позволяет создавать структуры данных с различными уровнями вложенности.
Объекты в JavaScript являются ссылочными типами данных, что означает, что когда вы присваиваете объект другой переменной или передаете его в функцию, вы передаете ссылку на объект, а не сам объект. Изменения объекта будут видны через все ссылки на него.
let объект1 = { имя: "Иван" };
let объект2 = объект1;
объект2.имя = "Мария";
console.log(объект1.имя); // "Мария"
Объекты являются фундаментальными структурами данных в JavaScript и играют важную роль в языке. Они используются для хранения и организации данных, создания классов и объектно-ориентированного программирования, а также для многих других задач в веб-разработке и разработке приложений.
Конструкторы в JavaScript - это функции, которые используются для создания объектов определенного типа или класса. Они предоставляют шаблон для создания новых экземпляров объектов с определенными свойствами и методами. Конструкторы особенно полезны при реализации объектно-ориентированного программирования. Вот как создавать и использовать конструкторы:
Чтобы создать конструктор, определите функцию с большой буквы (это общепринятая практика) и определите свойства и методы, которые будут принадлежать объектам, созданным с использованием этого конструктора.
Для создания новых объектов, используйте ключевое слово new
, после которого следует вызов конструктора. Это создаст новый экземпляр объекта, и конструктор будет выполнен для инициализации свойств этого объекта.
Для добавления методов, доступных для всех объектов, созданных с использованием данного конструктора, используйте прототипы. Методы, добавленные в прототип, разделяются между всеми экземплярами.
Человек.prototype.приветствие = function() {
console.log("Привет, меня зовут " + this.имя + " и мне " + this.возраст + " лет.");
};
человек1.приветствие(); // "Привет, меня зовут Иван и мне 30 лет."
человек2.приветствие(); // "Привет, меня зовут Мария и мне 25 лет."
Вы также можете создавать подклассы, наследующие свойства и методы от других конструкторов. Например, можно создать конструктор Студент
, который наследует от Человек
.
function Студент(имя, возраст, номерСтудента) {
Человек.call(this, имя, возраст);
this.номерСтудента = номерСтудента;
}
Object.create
:Вы можете использовать Object.create
для создания объектов, наследующих свойства и методы от другого объекта или прототипа.
Конструкторы в JavaScript позволяют создавать объекты с определенной структурой и поведением, что делает код более модульным и обеспечивает легкость и гибкость при работе с объектами и классами. Они широко используются в объектно-ориентированном программировании и веб-разработке для создания абстракций и структур данных.
this
this
в JavaScript - это ключевое слово, которое используется для ссылки на текущий контекст выполнения. Оно может принимать разные значения в зависимости от того, где и как используется. Вот более подробная информация о this
:
this
в методах объектов: Когда метод вызывается на объекте, this
ссылается на этот объект. Например:
this
в глобальном контексте: В глобальном контексте, вне объектов и функций, this
ссылается на глобальный объект. В браузере это обычно window
, в среде Node.js - global
.
this
в обычных функциях: Поведение this
в обычных функциях зависит от способа вызова функции. В строгом режиме ("use strict"
) this
в функциях без явно указанного контекста (например, как метод объекта) будет undefined
. В противном случае, this
будет ссылаться на глобальный объект.
this
в стрелочных функциях: В стрелочных функциях this
принимает значение из окружающего контекста. Он не имеет собственного контекста. Это отличает стрелочные функции от обычных.
this
в конструкторах классов: Конструкторы классов используют this
для инициализации свойств экземпляров класса. this
ссылается на экземпляр класса, который создается при вызове конструктора.
Прототипы - это ключевая часть системы наследования в JavaScript и позволяют объектам наследовать свойства и методы от других объектов. В JavaScript каждый объект имеет ссылку на свой прототип, и если свойство или метод не найден в объекте, JavaScript будет искать его в прототипе объекта. Прототипы обеспечивают механизм наследования и делают код более эффективным и модульным. Вот ключевые аспекты использования прототипов:
Каждый объект в JavaScript имеет прототип. Прототип - это ссылка на другой объект, который содержит свойства и методы, которые могут быть унаследованы объектом. Прототип объекта можно получить, обратившись к свойству prototype
конструктора этого объекта.
Прототипы позволяют объектам наследовать свойства и методы от других объектов. Когда свойство или метод не найден в объекте, JavaScript будет искать его в прототипе.
let родитель = { имя: "Иван" };
let дочь = { возраст: 5 };
дочь.__proto__ = родитель;
console.log(дочь.имя); // "Иван"
Свойства, определенные в объекте, называются собственными свойствами. Свойства, унаследованные от прототипа, называются прототипными свойствами.
let объект = { имя: "Иван" };
console.log(объект.hasOwnProperty("имя")); // true (собственное свойство)
console.log(объект.hasOwnProperty("возраст")); // false (прототипное свойство)
Прототип объекта можно изменить, чтобы он указывал на другой объект. Это можно сделать с помощью свойства __proto__
или с использованием метода Object.create()
.
let родитель = { имя: "Иван" };
let дочь = { возраст: 5 };
дочь.__proto__ = родитель;
// Изменение прототипа с использованием Object.create()
let новыйПрототип = { имя: "Мария" };
Object.setPrototypeOf(дочь, новыйПрототип);
console.log(дочь.имя); // "Мария"
Конструкторы также имеют прототипы, и объекты, созданные с использованием конструкторов, наследуют свойства и методы из прототипов конструкторов.
function Человек(имя) {
this.имя = имя;
}
Человек.prototype.приветствие = function() {
console.log("Привет, меня зовут " + this.имя);
};
let человек = new Человек("Иван");
человек.приветствие(); // "Привет, меня зовут Иван"
Прототипы играют важную роль в системе наследования JavaScript и позволяют создавать эффективные и модульные структуры данных и кода. Они также позволяют создавать подклассы и наследовать функциональность от родительских классов, что является важной частью объектно-ориентированного программирования в JavaScript.
Инкапсуляция - один из основных принципов объектно-ориентированного программирования (ООП), который означает сокрытие данных и методов, оперирующих с этими данными, внутри объекта. Это позволяет создавать интерфейсы для взаимодействия с объектом и контролировать доступ к его внутренним состояниям. В JavaScript инкапсуляция может быть реализована с использованием замыканий и приватных переменных. Вот как это работает:
JavaScript не предоставляет нативную поддержку приватных переменных и методов, но вы можете использовать замыкания для создания приватных членов внутри объекта или конструктора. Это делается путем объявления переменных в замыкании, которое содержит методы объекта. Эти переменные недоступны извне объекта.
function Счетчик() {
let счет = 0;
this.увеличитьСчет = function() {
счет++;
};
this.получитьСчет = function() {
return счет;
};
}
let счетчик = new Счетчик();
счетчик.увеличитьСчет();
console.log(счетчик.получитьСчет()); // Выведет "1"
Инкапсуляция позволяет создавать интерфейсы для работы с данными объекта, и таким образом, скрывать детали реализации. Вы можете определить методы, которые предоставляют доступ к данным объекта, а также контролировать их изменение.
function БанковскийСчет(начальныйБаланс) {
let баланс = начальныйБаланс;
this.получитьБаланс = function() {
return баланс;
};
this.снять = function(сумма) {
if (сумма <= баланс) {
баланс -= сумма;
return true;
} else {
return false;
}
};
this.пополнить = function(сумма) {
баланс += сумма;
};
}
Инкапсуляция также позволяет определять публичный интерфейс объекта, который определяет, какие методы и свойства доступны извне объекта. Это помогает скрыть детали реализации и упростить работу с объектом.
let счет = new БанковскийСчет(1000);
console.log(счет.получитьБаланс()); // Выведет "1000"
счет.пополнить(500);
console.log(счет.получитьБаланс()); // Выведет "1500"
Инкапсуляция важна для создания надежных и безопасных объектов, а также для сокрытия сложности внутренней реализации от внешнего кода. Это делает код более модульным и облегчает его поддержку и изменение в будущем.
JavaScript поддерживает полиморфизм, что означает, что объекты могут иметь методы с одинаковыми именами, но различной реализацией.
Полиморфизм - это один из ключевых принципов объектно-ориентированного программирования (ООП), который позволяет одному интерфейсу или методу работать с разными типами данных или объектами, предоставляя им общий интерфейс. Это облегчает работу с разнообразными объектами и позволяет создавать более универсальный и гибкий код. В JavaScript полиморфизм может быть реализован несколькими способами:
Полиморфизм посредством перегрузки методов (ад-хок полиморфизм): В JavaScript методы могут принимать разное количество аргументов и выполнять разные действия в зависимости от количества и типов аргументов.
Полиморфизм посредством наследования (подтиповый полиморфизм): При использовании наследования и интерфейсов вы можете создавать подклассы с различными реализациями методов, но с общим интерфейсом. Это позволяет работать с объектами разных классов, как с объектами родительского класса.
Полиморфизм посредством интерфейсов и динамической диспетчеризации (полиморфизм времени выполнения): JavaScript поддерживает динамическую диспетчеризацию, что означает, что вызов метода будет определен во время выполнения, а не во время компиляции. Это позволяет объектам разных типов вызывать один и тот же метод с общим интерфейсом.
class Животное {
голос() {
console.log("Животное издает звук");
}
}
class Собака extends Животное {
голос() {
console.log("Собака лает");
}
}
class Кошка extends Животное {
голос() {
console.log("Кошка мяукает");
}
}
function сказатьЧто(g) {
g.голос();
}
const животное = new Животное();
const собака = new Собака();
const кошка = new Кошка();
сказатьЧто(животное); // Выведет "Животное издает звук"
сказатьЧто(собака); // Выведет "Собака лает"
сказатьЧто(кошка); // Выведет "Кошка мяукает"
Полиморфизм делает код более гибким, так как он позволяет взаимодействовать с различными объектами через общий интерфейс, и это особенно полезно, когда вы работаете с коллекциями объектов разных типов.
В JavaScript классы представляют собой шаблоны для создания объектов и являются основой объектно-ориентированного программирования (ООП). Они предоставляют удобный способ определения структуры и поведения объектов. С классами в JavaScript можно создавать экземпляры объектов с общими свойствами и методами. Вот как определять и использовать классы в JavaScript:
Классы объявляются с использованием ключевого слова class
, за которым следует имя класса. Имя класса обычно начинается с заглавной буквы.
class Человек {
constructor(имя, возраст) {
this.имя = имя;
this.возраст = возраст;
}
приветствие() {
console.log(`Привет, меня зовут ${this.имя} и мне ${this.возраст} лет.`);
}
}
Чтобы создать экземпляр класса, используйте ключевое слово new
, за которым идет вызов конструктора класса. Это создает новый объект с заданными свойствами.
const человек1 = new Человек("Иван", 30);
const человек2 = new Человек("Мария", 25);
человек1.приветствие(); // "Привет, меня зовут Иван и мне 30 лет."
человек2.приветствие(); // "Привет, меня зовут Мария и мне 25 лет."
Конструктор - это метод класса, который вызывается при создании нового экземпляра. Он инициализирует свойства объекта.
Методы класса - это функции, определенные в классе. Они предоставляют поведение объектам, созданным на основе этого класса.
Классы могут наследовать свойства и методы от других классов. Для создания подкласса используйте ключевое слово extends
.
class Студент extends Человек {
constructor(имя, возраст, номерСтудента) {
super(имя, возраст);
this.номерСтудента = номерСтудента;
}
учеба() {
console.log(`${this.имя} учится под номером ${this.номерСтудента}.`);
}
}
В JavaScript классы могут использовать инкапсуляцию через приватные поля и методы, чтобы скрыть части данных от внешнего доступа.
class Счет {
#баланс = 0;
получитьБаланс() {
return this.#баланс;
}
пополнить(сумма) {
this.#баланс += сумма;
}
снять(сумма) {
if (сумма <= this.#баланс) {
this.#баланс -= сумма;
return true;
} else {
return false;
}
}
}
Классы делают код более организованным и модульным, обеспечивая возможность создания объектов с общими характеристиками и поведением. Они предоставляют удобный и понятный способ описания структуры данных и взаимодействия между объектами в JavaScript.