Добавить в корзинуПозвонить
Найти в Дзене
Nuances of programming

Краткое руководство по ООП в JS

Источник: Nuances of Programming В данной статье я постараюсь объяснить новые возможности ES6 JavaScript с точки зрения объектно-ориентированной парадигмы. Для начала, Что такое парадигма программирования? Парадигма — это пример или модель чего-то. То есть некий шаблон, которого необходимо придерживаться. В данном случае — для создания компьютерных программ. Что такое объектно-ориентированная парадигма? Очевидно, что это парадигма программирования. Но помимо объектно-ориентированной парадигмы бывают и другие разновидности: функциональное программирование, реактивное программирование и т.д. Каковы характеристики этой парадигмы? В данной парадигме мы программируем ближе к реальности, то есть в рамках классов, объектов, свойств и т.д. Для ОО-парадигмы характерны специфические термины: абстракция, инкапсуляция, модульность, безопасность, полиморфизм, наследование и др. Главная проблема JavaScript заключается в том, что это не самый объектно-ориентированный язык. Почему? Потому что в Ja
Оглавление

Источник: Nuances of Programming

В данной статье я постараюсь объяснить новые возможности ES6 JavaScript с точки зрения объектно-ориентированной парадигмы.

Для начала,

Что такое парадигма программирования?

Парадигма — это пример или модель чего-то. То есть некий шаблон, которого необходимо придерживаться. В данном случае — для создания компьютерных программ.

Что такое объектно-ориентированная парадигма?

Очевидно, что это парадигма программирования. Но помимо объектно-ориентированной парадигмы бывают и другие разновидности: функциональное программирование, реактивное программирование и т.д.

Каковы характеристики этой парадигмы?

В данной парадигме мы программируем ближе к реальности, то есть в рамках классов, объектов, свойств и т.д. Для ОО-парадигмы характерны специфические термины: абстракция, инкапсуляция, модульность, безопасность, полиморфизм, наследование и др.

Главная проблема JavaScript заключается в том, что это не самый объектно-ориентированный язык. Почему? Потому что в JavaScript объектом считается все. Это можно исправить с помощью известного прототипа.

В ES5 такой пример делался бы через шаблон «Фабрика»:

-2

В ES6 то же самое можно сделать намного проще. Но помните, что все это — синтаксический сахар.

Тот же пример в синтаксисе ES6

-3

В данном примере через ключевое слово extends мы как бы говорим: «Ок, я хочу наследовать свойства класса Person». Но на задворках происходит все то же самое, что и в примере с прототипами в ES5.

Статичные методы:

-4

Private методы

В отличие от Java и С# в JavaScript нет ключевого слова private. Однако в JavaScript есть определенная договоренность по использованию «приватных» значений — добавление нижнего подчеркивания перед словом. Давайте посмотрим на примере:

-5

Однако в ES6 нам доступен вызов объекта WeakMap, который позволяет создавать приватные свойства. Давайте посмотрим:

-6

Геттеры и сеттеры

Если у нас есть приватные методы, то можно создавать и публичные методы, возвращающие приватные значения. Для возвращения значения используется get, а определение нового значения делается через set.

-7

Полиморфизм

Это способность объекта в процессе своего выполнения ссылаться на экземпляры собственного класса или любого класса-потомка. Классы-потомки могут переопределять метод.

-8

Другие концепции:

class: создание нового класса/модели.
method: функция внутри класса.
constructor: метод, который инициирует объект при создании экземпляра класса.
extends: используется для определения наследования.
super: метод, который устанавливает свойства наследования за счет вызова родительского конструктора. Метод super должен стоять первой строкой в методе constructor.
get: возвращает значение.
set: переопределяет новое существующее значение.
new: создание объекта через метод конструктора класса.

Читайте нас в телеграмме и vk

Перевод статьи Germán Cutraro: The Little Guide for OOP in JS