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

Как правильно использовать ООП в JavaScript?

Всем привет.

Чем больше я пишу кода тем больше мне он не нравится. Хотел бы писать нормальный ООП код. Я хорошо понимаю как рабоют прототипы, наследование и т.д., но не знаю как его применить когда создаю интерфейсы работающие с DOM.

Большинство книг и статей, что я видел, описывают лишь концепции и паттерны без привязки к реальным задачаи по разработке интерйфесов.

Посоветуйте в какую сторону смотреть, что почитать.

P.S. Только фрэймворки не советуйте, пожалуйста .)
  • Вопрос задан
  • 4221 просмотр
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
UbuRus
@UbuRus
В JavaScript ООП не нужно.
Используйте модульность: largescalejs.ru

Почитать:
habrahabr.ru/post/240219
Ответ написан
@Itvanya
Научись писать модули, разделать замыканием открытые и закрытые куски кода для объекта, созданного через конструктор. Можно неплохо научиться писать ООП на JavaScript, учась писать годные анимации.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Работу с DOM надо инкапсулировать либо в шаблонизацию, либо в двухстороннее связывание. А вот когда будете писать шаблонизатор и ViewModel, тогда-то ООП и пригодится.

Так же ООП пригождается в сложной бизнес-логике
Ответ написан
Комментировать
@psyhO_octopus Автор вопроса
Я вот что имел ввиду. Допустим я делаю какую то панель. На панели есть кнопки. При каких то событиях кнопки могут быть в состоянии loading или disabled, например. Можно сделать класс Panel и когда произойдет какое-то событие находить кнопку и ставить класс для состояния loading, например. А можно сделать еще один класс Button, который имеет метод для смены состояний. Внутри Panel писать что-то вроде var successBtn = new Button(...) и уже работать с кнопка не как с нодой, а как с объектом.

Пример простой, конечно, но думаю суть раскрывает. Т.е. хочется научиться разбиравать интерфейс на части и работать с ними как с объектами, а не создавать один большой класс и там писать лапшу по работе с DOM
Ответ написан
Комментировать
Serhioromano
@Serhioromano
Web Developer
P.S. Только фрэймворки не советуйте, пожалуйста .)


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

Для примера, так решили эту задачу Microsoft. В приложениях которые пришутся на яваскрипте используются котовые методы для создания классов, и для их вызова.

Так что или найдите что то хорошое, куда было вложено много ума и сил как например Ангуляр или пишите что то свое.

Но найтивно на голом яваскрите писать красивый ООП код НЕВОЗМОЖНО.
Ответ написан
undassa
@undassa
Last.Backend
Посмотрите как реализовано создание в JS класса из CoffeeScript.
Используйте prototype

И да, нет тут смысла даже думать про фреймворки.
Ответ написан
Ваш ответ на вопрос

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

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