В объектно-ориентированном программировании класс - это расширяемый шаблон программного кода для создания объекта.
class
в JavaScript, это «синтаксический сахар» и расширение одного из шаблонов, которые мы здесь будем изучать.
Программисты JavaScript могут определить класс даже без использования ключевого слова class !!! у нас есть несколько шаблонов для определения и использования концепций класса OOPS.
1- Шаблон функционального класса
2- Заводской шаблон функций
3- Паттерн на основе прототипа
4- Наследование на основе прототипов для классов
Шаблон функционального класса: -
1- это шаблон программного кода для создания объектов (с новыми).
2 - он предоставляет начальное значение для состояния (имя из параметра).
3- он предоставляет метод sayHi ()
переменные и методы внутри функций будут доступны только после добавления их в ключевое слово this. this ключевое слово определяет, будут ли переменные и методы внутри класса частными или общедоступными. this используется, чтобы скрыть реализацию от внешнего мира.
так что мы можем легко добавить сюда функцию calcAge
Заводской шаблон функций
Мы можем создать класс без использования new.
В этом шаблоне объект может быть создан без нового ключевого слова. Он совпадает с функциональным шаблоном, но отличается от самого класса, возвращающего объект javascript, поэтому необходимо создать объект с помощью ключевого слова new. Какие бы переменная и метод ни были добавлены к возвращаемому объекту, они являются общедоступными, если они не добавлены к возвращаемому объекту, они не являются общедоступными.
Шаблон на основе прототипа: -
Класс шаблона прототипа создает новый объект, но вместо создания неинициализированного объекта он возвращает объекты, которые инициализированы значениями, скопированными из объекта-прототипа.
Методы хранятся в свойстве class.prototype.
Наследование на основе прототипов для классов: -
Создадим два класса на основе прототипов;
1- Кролик
2- Животное
здесь оба полностью независимы.
Но мы хотим, чтобы Rabbit расширил Animal. Rabbit расширяет Animal и имеет доступ к методу Animal и использует свой собственный метод.
Что это значит в прототипе.
Сейчас методы для объекта rabbit находятся в Rabbit.prototype. Мы хотим, чтобы кролик использовал прототип Animal как «запасной вариант», если метод не найден в Rabbit.prototype.
Итак, цепочка прототипов должна быть = ›
Строка (*)
устанавливает цепочку прототипов. Таким образом, rabbit
сначала ищет методы в Rabbit.prototype
, а затем в Animal.prototype
. А затем, для полноты картины, отметим, что если метод не найден в Animal.prototype
, поиск продолжается в Object.prototype
, потому что Animal.prototype
- это обычный простой объект, поэтому он наследуется от него.