Не туда ответил сначала,
Имхо, базовые знания языка важны, хотя бы просто потому, что когда прочитаешь книгу - узнаешь некоторые особенности языка, вообще что он может, какие есть функции, ну а дальше практика, как тут уже писали.
Большую часть вещей лично я научился делать, когда мы с коллегами решили взяться за сторонний проект, вот тогда я узнал и про git и про трекеры задач, про bootstrap, улучшил знания языка (в моем случае это C#).
Читать книги, это важно: узнаешь новые возможности языка, тонкости, в мозгу запоминается, какой инструментарий вообще имеется в языке, если образно выразиться, тот кто читает книги, забивает гвозди не табуреткой, а молотком, потому что он знает, что для забивания гвоздей есть молоток (он в книге прочитал и это запомнилось), но если при этом не делать хотя бы практику из книги, то все быстро забывается (да и если практику только из книги делать, то тоже забывается).
Зато, когда что-то пишешь и сталкиваешься с проблемой, вспоминаешь "ага, я читал в книге, что там есть какая-то такая возможность у языка, чтобы это реализовать, надо посмотреть".
Мой вам совет, книгу прочитали - теперь придумываете или смотрите на фрилансе проект и делаете его, чтобы знания из книги закрепить. В моем случае все только так и работает, голая теория из книги очень и очень быстро забывается.
Когда я сталкиваюсь с тем, что надо что-то на JS писать, чего я не знаю, я беру справочник по JS и смотрю как там это реализуется, ну вот в таком например "JavaScript: Подробное руководство" Дэвид Флэнаган. Лично для меня, читать чужой код - мучение, поэтому мне не подходит обучаться через чтение чужого кода.