Подтвердить что ты не робот

Обучение JavaScript Java-программистам

Через несколько недель у меня будет возможность познакомить моих коллег с JavaScript. Предыдущие проекты здесь использовали в основном Java и С++. Каковы наиболее важные или внешние аспекты JavaScript, которые мне нужно объяснить? У меня есть короткий список больших вещей, которые я уже определил:

  • Хеши/словари как объекты
  • Прототипное наследование
  • Затворы
  • Binding

Я также собираюсь извлечь из Повторное введение в JavaScript.

Что я пропустил? Я ищу что-нибудь, от больших языковых особенностей до небольших gotchas.

4b9b3361

Ответ 1

Проверьте все сессии Дуга Крокфорда в YUI Theatre. Они называются "Язык программирования Javascript", "Javascript," Хорошие части "," DOM, Несовершенный API "и" Расширенный Javascript ". Он может служить вам источником, когда вы разрабатываете учебную программу и показываете некоторые из них, что может привести к утаиванию языка" Микки Мауса", который, естественно, будет иметь программисты Java.

Вы можете загрузить все эти сеансы.

Ответ 2

Один из них, который, как я ожидаю, заслуживает особого упоминания, заключается в различии обзора. Например, я в основном перешел с Java на Javascript, и мне потребовались годы, чтобы понять, почему код, подобный приведенному ниже, не работает должным образом (т.е. Каждая кнопка предупреждает "Кнопка 9" ):

function myFn() {
   ...
   for (var i = 0; i < 10; i++) {
      elems[i].onClick = function() { alert ("Button " + i); };
   }
}

Даже когда вы читаете объяснение и можете следовать ему, это все еще занимает некоторое время, прежде чем вы сможете инстинктивно определить код, делающий эту ошибку.

Ответ 3

Сначала Gotcha убедитесь, что они знают Java!= JavaScript;)

Ответ 4

JavaScript очень динамичен, который трудно понять для людей статического языка:

Динамические

динамическая типизация

Как и в большинстве языков сценариев, типы связаны со значениями, а не с переменными. Например, переменная x может быть привязана к числу, а затем восстанавливается до строки. JavaScript поддерживает различные способы проверки типа объекта, включая утиную печать.

объекты как ассоциативные массивы

JavaScript почти полностью основан на объектах. Объекты являются ассоциативными массивами, дополненными прототипами (см. Ниже). Имена объектов - это ассоциативные ключи массива: obj.x = 10 и obj [ "x" ] = 10 эквивалентны, точечное обозначение - просто синтаксический сахар. Свойства и их значения могут быть добавлены, изменены или удалены во время выполнения. Свойства объекта также могут быть перечислены через цикл for... in.

Ответ 5

Я действительно нашел эту действительно отличную ссылку, отображающую концепции OO в JS для С++ dev на днях, это должно быть уместно, потому что, как только вы пройдете синтаксические варианты, возникает вопрос: "Как вы делаете X?"

О и функции первого класса!

Ответ 6

Если память служит, мои первые умственные прыжки для JavaScript были:

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

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

3 - когда его использовать. Там много точек, где можно использовать JSP (или другой механизм генерации страницы на стороне сервера) или JavaScript. Важно иметь ощущение, когда это правильный инструмент для работы. Необычно видеть, что новые разработчики JavaScript делают все в JavaScript. Теперь, когда у них есть молот, весь мир превратился в ногти.

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

Ответ 7

Скажите им, чтобы они получили копии Javascript: окончательное руководство.

Я - программист на С++, который должен был изучить Javascript пару лет назад, и эта книга была абсолютно бесценной с точки зрения изучения языка. Он также получил отличную ссылку на некоторые из собственных Javascript-объектов, таких как String и Number.

Ответ 8

Буквальный синтаксис javascript, используемый в JSON, также является важной особенностью. Не сложно, но все же важно.

Ответ 9

Вы определенно захотите потратить некоторое время, объяснив, что в Javascript нет таких вещей, как классы, а также различия между наследованием на основе прототипов и наследованием на основе классов.

Если вы разговариваете с кучей кодеров Java/С++, я мог бы видеть, что это является точкой торможения.

Ответ 10

Также расскажите им о библиотеках, таких как этот очевидный пример. Во многих случаях декларативный > императив при манипулировании DOM. И это просто так красиво.

Ответ 11

Преподавание DOM и HTML лучше. Это создает хорошую основу для Javascript.