I always recommend Secrets of a JavaScript Ninja, which has been a great tool for me to learn some of the intermediate to advanced JS stuff. Covers some basics too, but is mostly for learning the deeper stuff. I like it a lot.
I really enjoyed Secrets of a JavaScript Ninja by John Resig, the main person by jQuery. I found it to be really helpful as someone that was comfortable with JS and wanted to know more, but if I remember right the beginning of the book went over some more of the fundamentals.
For more advanced topics, "Secrets of the JavaScript Ninja" covers many of the advanced techniques popular libraries use (including prototype and jQuery), written by the jQuery creator.
It assumes you have an understanding of the fundamentals so it gets into the advanced topics pretty quickly.
http://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X
For one of my projects, I decided to just use vanilla JavaScript AJAX and for the rest, I ended up using jQuery. I felt this gave me a better handle of what was going on behind the scenes.
For vanilla JavaScript resources, the MDN documentation was helpful to get going. Using vanilla JavaScript was hard and it isn't super intuitive. This is why I think most people just end up using a library to call out to APIs. There's also a good Lynda course that's called "AJAX and JavaScript." It's pretty fast paced, and the course assumes you already know basic JavaScript, but I found it helpful with learning vanilla js ajax.
As far as jQuery goes, this video was also really helpful. Again, fairly fast pace but overall, good info. Once again, using the jQuery documentation is ESSENTIAL. I've found that in general, if I am stuck, asking myself the right questions, going to the documentation, and finding the answers is usually best.
I also read through the book Secerts of the JavaScript Ninja which had a few things to say about asynchronous code. Hope this helps!
Copy paste again:
I think Eloquent JavaScript is a PHENOMENAL book. However, I also think you need solid fundamentals in order to make the jump to Eloquent JavaScript.
I've tried a shit ton of stuff for beginners and through a lot of trial and error (and time wasted -_-) I ended up with the roadmap that I believe works best.
1. Rithm's free courses (https://www.rithmschool.com/courses).
I semi-recently found out about these guys; they're legit. Rithm's free JS courses provide a perfect beginner to intermediate step for learning JS. You have to give them your email, but they don't spam and are actually helpful. I also think these guys don't hold your hand and teach you how to think rather than just "do this". They also give explanations for why you should do stuff (if you want to read). I think they're releasing more stuff on python as well if you're interested.
2. Eloquent JS (eloquentjavascript.net) Super awesome next step. Rithm gets you to the intermediate level, and EloJS cements it. It gets complicated quickly, but I think the jump from rithm's free courses to eloJS is a step that makes sense. Not too difficult due to the solid foundation you get from rithm, but challenging enough that with it you should be able to start stretching your coding abilities and take advantage of "real" coding.
3. This book (https://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X) Great for going from intermediate to advanced. Heavily recommended. I'd buy it to support the guys, but you can probably find a pdf somewhere.
BONUS: CodeWars
Awesome way to check your skill. They also tie in well with Rithm --> EloJS --> Secret JS Ninja.
Let me know if anything is unclear. Hope this helped.
John Resig's Secrets of the JavaScript Ninja and Douglas Crockford's JavaScript: The Good Parts are pretty much the only ones worth reading in my opinion.
The best thing would be to build something you want to use yourself. Maybe you try cordova and build a small app with the browser platform so that you can create a simple App that you can bring to your Smartphone.
Read a lot of code: TODO MVC is a good place to start, people try to write good code for this one because they want you to use their framework :-). The problem with the source code of many projects is that the JS ecosystem is in a constant flux and ES6 modules are skyrocketing right now. You may want to check out the jQuery source code - you can pretty much watch the evolution by looking at older versions of the source code and how it evolved.
If you feel really adventurous the NodeJS source code is a fun read - although it's a very big project that also got some C/C++ code sprinkled in - but that shouldn't be a problem for you :-).
I would advise you not to bother reading the Angular1 code for the time being, Angular2 maybe interesting but its written in Microsoft's TypeScript - which is a nice language on top of JS that is worth learning about.