уже хотелось бы как-то на практике все это закрепить, чтобы не забылось, но пробелы в знаниях не позволяют реализовать задуманное.
Отличный способ попрактиковаться — зарядившись свежей порцией знаний полученной из книг и примеров, засеть на каком ни будь форуме, того же javascript.ru, и следить за вопросами, пытаться найти на них ответ, причем воплотив его в работающий код с всеми возможными теоретическими пояснениями, так как туда люди идут как раз с «граблями» и «неочевидностями», «скилл» прокачивается очень хорошо, не редкость, что там таки и удается пощупать нечто реальное, с вполне себе понятным «юз кейсом».
Ну и собственно никто не отменял такой способ практики как «велосипедостроение», т.е. откажитесь от некоего готового решения и попробуйте реализовать необходимый от него функционал самостоятельно, а после взгляните на исходники готового решения и после разбирайтесь — почему у Вас не так :) (очень доставляет) например — попробуйте отказаться от jQuery для выполнения чего-то небольшого, но прогоните по всем браузерам, — экскурс по внутренней кухне браузеров Вам обеспечен, а с ним и много кода на JavaScript. Чувствуете неуверенность в понимании асинхронного стиля программирования — попробуйте поиграться с Node.JS — хапните асинхронности в самом чистом ее проявлении.
PS: Еще именно для практики — очень полезно писать тесты, опять же желательно без привлечения сторонних решений, уж поверьте мне код тестов очень редко бывает меньше кода самого приложения :), я обычно делаю так когда текущих задач связаных с JavaScript не стоит, а «нога» (в смысле мой JavaScript) уж больно затекла. Беру что ни будь старенькое и давай обкладывать тестами… (И кода напишу много, и глядишь найду проблемы какие, что-то перепишу). Вот.