Кто-нибудь смог научить себя сильным навыкам ООП, в основном развиваясь с помощью JavaScript?

Я пытаюсь это сделать, я полный пользовательский интерфейс и знаю, что еще не достиг этого. Когда я имею в виду навыки ООП, я имею в виду понимание и знакомство с такими понятиями, как наследование, полиморфизм, инкапсуляция, абстракция. Я знаю, что с большей вероятностью можно добиться того, что мне нужно, сосредоточившись на другом языке в свободное время. Это план, но я был бы очень заинтригован, если бы кто-нибудь смог добиться этого исключительно с помощью JavaScript и как вы это сделали.

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

Обратная связь:

На всякий случай люди задаются вопросом, куда я пошел, -

  • Я более подробно рассмотрел, что средства прототипного наследования и способы использовать его лучше.

  • Я решил провести больше времени обучение рубину (может быть любой язык это основанный на классе) в моем запасном время.

  • Я решил экспериментировать (небрежно) с разными языков, чтобы я мог получить не тонкости/точный синтаксис, но более общий обзор того, как они подход ООП. Я начал с Self, Scheme следующий в моем списке.

Большое спасибо за действительно полезные ответы.

Ответы

Ответ 1

Во-первых, позвольте мне предисловие к этому, сказав, что JavaScript - один из моих любимых языков. Я люблю его использовать, и мне нравится его сила.

JavaScript, безусловно, делает ООП, и как только вы обнимаете его вокруг, он делает ООП достаточно хорошо. Но я бы не рекомендовал изучать ООП через JavaScript по следующим причинам:

  • JavaScript использует своего рода bastardization Prototypal inheritance и Classical inheritance. В JavaScript вы не определяете такие классы, как на классическом языке, но есть все еще остатки классического наследования - как и ключевое слово new. Это очень смущает людей, которые обернули голову вокруг классического ООП.

  • У JavaScript действительно нет нормальной концепции частных и общедоступных переменных, таких как классический язык (например, Java). Конечно, вы можете определить общедоступные и частные переменные, но методы являются своего рода эзотерическими. Поскольку JavaScript не делает публичные и частные переменные "из коробки", вся идея скрытия данных и инкапсуляции не применяется естественным образом.

  • JavaScript, безусловно, может выполнять полиморфизм, но он не выполняет его через регулярную перегрузку/переопределение функции. Вместо этого функция или метод могут принимать переменное количество аргументов, которые могут быть добавлены "на лету" во время выполнения. Опять же, он может выполнять полиморфизм, он просто не делает этого, как большинство более популярных и популярных языков.

Как я уже говорил, я люблю JavaScript, и мне нравится работать с ним. Вы, безусловно, можете делать ООП в JavaScript, и вы, конечно, можете узнать ООП, изучив его с помощью JavaScript. Но я думаю, что это тяжелая битва.

Я думаю, вам лучше научиться OOP от Ruby, а затем перейти на JavaScript. Ruby и JavaScript имеют разные синтаксисы, но сила и "чувство" языков очень схожи. Вы можете делать подобные вещи на обоих языках, и оба языка имеют схожие функции и поддерживают аналогичные парадигмы.

Ответ 2

Нет причин, по которым вы не можете развивать сильные объектно-ориентированные навыки с помощью Javascript, но Javascript - это объектно-ориентированный язык на основе прототипа, который сильно отличается от других основных объектно-ориентированных языков (С++, Java и т.д.), которые основаны на классах.

Вы должны ознакомиться с обоими моделями, как только сможете (как только вы освоите основы javascript), так что вы можете учиться на дискуссиях о моделях на основе классов без особого трения.

Наконец, если вы еще не знакомы с Дугласом Крокфордом, я настоятельно рекомендую посетить его сайт, прочитав его статью JavaScript: Мир, который не понимал язык программирования, затем прочитал его книгу Javascript: Хорошие части.

Ответ 3

Я в основном развивается в С# и JavaScript.

К сожалению, я не встречал кого-то, кто только развился в JavaScript, который имеет сильные навыки ООП.

Конечно, это должно быть возможно. В JavaScript есть все концепции OO, которые испекли. Вам просто нужно научиться правильно использовать Prototypal inheritence для достижения своих целей (или изучить через Framework, как MooTools, какой тип побеждает цель).

Ответ 4

Многие разработчики утверждают, что JavaScript не имеет реальной функциональности ООП, а некоторые говорят, что вы даже не должны использовать функциональность ООП, которая включена. Я также многое кодировал в JavaScript objectoriented. Но я также много кодировал в PHP и Java со всеми методами ООП.

Важные вещи, которые отсутствуют в JavaScript, - это статические или конечные классы, а также интерфейсы. Вы используете их довольно часто на таких языках, как Java.

Я бы сказал, что если вы только хотите узнать, что означает ООП и как он работает в небольших случаях, то JavaScript достаточно. Чтобы действительно изучить OOP im complete, вам необходимо изучить язык, такой как Java, С++, Ruby или даже PHP.

Ответ 5

Если вы хотите изучить ООП, но вы хотите, чтобы в нем был "простой" язык сценариев, вам, вероятно, было бы лучше работать в ActionScript через Flex.

Ответ 6

Я собираюсь пойти с "Нет".

Я работал с несколькими javascript-разработчиками, и я всегда мог указать, какие из них являются родными для JavaScript, и которые имели фон Java/С#/Delphi

Кстати, это не из javaScript, а просто для наблюдения.

Ответ 7

Я предлагаю вам практиковать на языках, которые позволяют создавать шаблоны высокого уровня без особых проблем... например, почему бы и нет, Python?

Что касается Javascript, этот пост нашего Джоэла быстро читается и подходит к пункту:

Может ли ваш язык программирования сделать это?

Ответ 8

Im сам нашел "JAVA" как самую сильную объектно-ориентированную программу, с которой я столкнулся, я действительно рекомендую ей развивать навыки ООП.

Счастливчик:)