ООП JS - ООП начинается с построения абстракции - Служит как минимум для структурирования - Хранит в себе нейкую логику (все необходимые элементы переменные и методы в одной обертке, что позволяет визуально понять для что к чему и для чего) - ООП js основано на прототипах В принципах ООП содержиться: - **Инкапсуляция** - сокрытие переменной, т.е доступ к переменной запрещен (в js доступ к таким переменным обычно делают через **get/set**) - **Наследование** - когда имеется класс от которого можно наследоваться, т.е получить доступ к переменным и методам. - **Полиморфизм** - Сразу к примеру: Имеется класс, который является родителем 3 классов, допустим: ``` class User { constructor(name, password, email) { this.userName = name; this.password = password; this.email = email; } loadContent() { some code... } } class Studen extends User { constructor() { some code... } loadContent() {//Переписываем метод return loadStudentContent(); } } class Admin extends User { constructor() { some code... } loadContent() {//Переписываем метод return loadAdminContent(); } } ```` Представим, имеется какая-либо площадка, неважно что это будет, сайт курсов или еще что-либо, вся суть в том, что есть 2 класса лиц: Админ и Студент, у одного и второго имеется один и тот же метод, но его реализация для каждого из класса лиц разная. Создали класс User, у которого имеется конструктор ~~Ля Ля Тополя~~ и также у родителя имеется метод **loadContent**, который описывает загрузку какого-либо контента и у наследников класса User мы можем его переписать, т.е использовать метод, который описан у роддителя, но с какими-то изменениями для определенного класса лиц. #js #javascript #jsOOPООП JS - ООП начинается с построения абстракции - Служит как минимум для структурирования - Хранит в себе нейкую логику (все необходимые элементы переменные и методы в одной обертке, что позволяет визуально понять для что к чему и для чего) - ООП js основано на прототипах В принципах ООП содержиться: - **Инкапсуляция** - сокрытие переменной, т.е доступ к переменной запрещен (в js доступ к таким переменным обычно делают через **get/set**) - **Наследование** - когда имеется класс от которого можно наследоваться, т.е получить доступ к переменным и методам. - **Полиморфизм** - Сразу к примеру: Имеется класс, который является родителем 3 классов, допустим: ``` class User { constructor(name, password, email) { this.userName = name; this.password = password; this.email = email; } loadContent() { some code... } } class Studen extends User { constructor() { some code... } loadContent() {//Переписываем метод return loadStudentContent(); } } class Admin extends User { constructor() { some code... } loadContent() {//Переписываем метод return loadAdminContent(); } } ```` Представим, имеется какая-либо площадка, неважно что это будет, сайт курсов или еще что-либо, вся суть в том, что есть 2 класса лиц: Админ и Студент, у одного и второго имеется один и тот же метод, но его реализация для каждого из класса лиц разная. Создали класс User, у которого имеется конструктор ~~Ля Ля Тополя~~ и также у родителя имеется метод **loadContent**, который описывает загрузку какого-либо контента и у наследников класса User мы можем его переписать, т.е использовать метод, который описан у роддителя, но с какими-то изменениями для определенного класса лиц. #js #javascript #jsOOP