Задать вопрос
thehighhomie
@thehighhomie

JavaScript ООП, запутался?

Прочитал книгу "JavaScript для профессионалов: 2 издание", и совсем запутался. В этой книге был представлен единственный шаблон создания повторного использования кода, то есть ооп. вот пример этого шаблона https://jsfiddle.net/7zn5ccgq/ Автор писал что в свойство prototype вообще не нужно лезть. На сколько я знаю, когда начинал учить JavaScript, во всех документациях которые читал, в том числе и на learn.javascript.ru, описывают что обычно предпочтительнее ооп в прототипном стиле. А вот в каком стиле как я обычно пишу codepen.io/radum/pen/xICAB (это не мой код, просто для примера) А тут автор, который jQuery создал. То ли пока я учил JavaScript что то поменялось в этом плане, а я так учил что и не заметил, то ли создатель jquery с ума сошел, то ли я вообще ничего не пойму... Помогите пожалуйста.
  • Вопрос задан
  • 1878 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
шаблон создания повторного использования кода, то есть ооп


Вы запутались. ООП не про повторное использование кода, функции/процедуры больше за это отвечают. Объекты отвечают за сокрытие состояния.

Автор писал что в свойство prototype вообще не нужно лезть.

Изнутри инстанса объекта - да. Когда ты описываешь новый тип объектов и хочешь отнеследоваться - то надо указать прототип объекта.

То ли пока я учил JavaScript что то поменялось в этом плане

Чуть поменялось, вышел ES2015, еще в прошлом году. Теперь все чуть проще и работа с прототипами объектов при наследовании/определении новых объектов стала чуть более прозрачной и удобной. И про createObject/defineProperties можно помнить только что бы понимать как все работает.
Ответ написан
@Aves
Собственно, в примере и используется наследование на прототипах, в методе extend текущий объект устанавливается как прототип создаваемого. Фактически, действие этого метода идентично обычному действию оператора new и функции-конструктора, только там в качестве прототипа берется объект в свойстве prototype функции, а здесь объект, в контексте которого вызван метод.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы