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

Когда использовать классы, а когда функции?

Здравствуйте. Уже где то неделю пишу себе бота. Бот играет в веб игру, весь скрипт запихал в расширение Google chrome. Вчера захотелось сделать уборку в скриптах, а то все как то на говнокод похоже. Структура моего бота:

Существуют всего 3 основных функций, две из них вообще самые важные, а одна скорее всего вспомогательный для остальных 2-х функций.

  1. firstFunc() {
  2. По-сути эта функция выполняет действия.
  3. }

  4. secondFunc() {
  5. Анализирует, что произошло до этого, и что произошло после того как первая функция выполнила свои действия.
  6. А потом, опять же, анализирует и повторяет первуюФункцию(переставляя новые аргументы);
  7. }

  8. setInterval(secondFunc, 1000);


Как думаете, что лучше использовать, классы или функции?
Если честно то, я все еще не знаю зачем в js классы и конструктор, я все еще недопонимаю зачем они нужны, какую роль играют, ООП? Думаю что нет.

Если вам не лень пожалуйста объясните коротко(можно и не коротко), зачем нужны классы и конструктор то что в них.
Как думаете оставить все в виде функции или создать класс. Учтите одну вещь, то что бот будет расти, он не остановиться на 3-х жалких функциях... Поэтому я задумываюсь,сделать так чтобы в будущем не переписывать всё.

Заранее огромное вам спасибо!!
  • Вопрос задан
  • 5817 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Согласен с Ларисой, но немного дополню.
Классы, собственно, введены для любителей ООП, и действительно - только эмулируют в JS классическое ООП.
Нужны они для того, чтобы инкапсуллировать части кода, иметь возможности классового наследования и проч. Но нужно не забывать, что в JS используется наследование на прототипах и никакого другого в нем нет.
Если понять вышесказанное, то от классов в JS лучше отказаться, и использовать встроенные инструменты. Сразу скажу единственный минус, который я не смог чисто обойти - отсутствие множественного наследования.

Итак, инкапсулляцию лучше всего делать, размещая все функции отдельного блока кода не в классе, а в качестве методов объекта.
var obj1= {
prop1: value,
met1: function(arguments) {
body
}
// etc
}


При таком подходе мы имеем в глобальном скопе лишь одну переменную, но можем вполне использовать весь ее потенциал, как:
obj1.met1();
И зачем нам нужны классы при таком подходе?
Если нам нужно унаследовать от другого объекта, самым простым способом будет разместить ссылку на родительский объект в свойстве __proto__ наследника.
var parent= {...};
var child= {
__proto__: parent,
.....
}
Ответ написан
Комментировать
larisamoroz
@larisamoroz
Курю маны, втыкаю в код, ваяю, починяю.
JS-классы — это так называемый «синтаксический сахар» для тех, кому больше нравится или кто больше привык писать именно в таком виде. На самом деле — это другой (по синтаксису) способ объявлять функции-конструкторы.

Подробнее — здесь https://learn.javascript.ru/es-class и здесь https://habrahabr.ru/post/175029/
Про функции-конструкторы можно почитать здесь: https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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