[0] - https://github.com/getify/You-Dont-Know-JS
[1] - https://www.ecma-international.org/publications/standards/Ec...
[0] - https://github.com/getify/You-Dont-Know-JS
[1] - https://www.ecma-international.org/publications/standards/Ec...
I don’t think you can master a language in one go. It’s not how most people’s brains work. I think you do it in stages. Get yourself a good introductory JS resource. The eloquent javascript book others posted looks good although I haven’t read it myself. Then read You Don’t Know JS. And then study the spec. Almost by definition the spec is the only thing that can give you a perfect and complete understanding the language. But don’t start there as a complete beginner is not its intended audience.
Be sure to apply what you learn from each book by working on projects. Don’t just read the books. The material won’t stick that way.
If Fabrice Bellard can do it, in C, with no dependencies, you can do it in whatever language you're already comfortable with, using the standard library. It's simply a matter of sustained effort and focus over time.
But looking into the details of how object prototypes and properties really work is essential for getting a good grasp of the language.
At some point, that knowledge can then be applied by learning more advanced language features such as implementing Proxies, Generators, and template literal functions.
To do so, some here are suggesting you read the language spec. I think Rau schmaer's series "Exploring ES6" [0] (and then ES7/8/9) is a great alternative to the actual spec. In those books he basically goes through the new features of each version of the language and does the deepest dive I've seen, with examples and references to the spec.
I do believe you need to have worked in JS for a while before jumping into YDKJS though. Having hit some of the idiosyncrasies of the language in the real world makes the book a much richer learning experience.
The author, Kyle Simpson, has some really good video courses available online as well. He goes further in depth about some of the more interesting topics in YDKJS and is really able to sell some of his patterns.
Again, Kyle’s material was better digested after some practical experience with the language.