先说一下为什么觉得学不好这东西:
不了解的时候 觉得JS和HTML和CSS就和网上说的一样 很简单,首先战术上就非常轻视。
然后 开始真正的要写JS了:
突然发现 这特么是什么玩意 跟自己之前的想法完全不一样
然后静下心来自己看一看 卧槽 好特么乱 这到底该怎么学啊…
然后每次看到这个都蛋疼的不得了,进而形成了一种习惯 看到JS就头疼。

现在为什么想学好JS了?
因为没有退路了.

所以JS为什么这么难学呢?
首先 一大波概念很抽象 而且还很难懂:比如说:什么是闭包?什么是内置对象,什么是DOM?
然后 JS本身内容就很多 比如函数库和对象库一大堆
再然后 混合了很多种编程思想,涉及到面向过程 以及面向对象,但是面向对象和Java的面向对象还不一样…
再然后 辛辛苦苦看完基础的语法,指到了变量函数对象的定义,但是实际过程中 遇到真实项目的时候 因为经常是直接使用JS的衍生库,比如jQuery, Angular, bootstrap, node.js, react.js等等 让人无法下手。
综合在一起 就想打人。

那么我们到底应该怎么学呢?
1 首先紧紧抓住它的核心地位
他的核心地位就是:位于前端的核心,主要用来操控和重新调整DOM树,通过修改DOM结构 来达到修改页面效果的目的。(错误的理解是:JS就是写代码 特点是乱七八糟)
2 必不可少的清晰的学习路线
第一阶段:JS基础 包括:JS基本语法,JS循环语句,函数和数组 JS对象 JS浏览器BOM和HTML DOM 事件 拖拽效果 cookie储存 正则表达式。
第二阶段 :学习面上对象的基础 学习JS 的几个必要的工具库:DOM库,事件库,AJAX库,原型继承库。
第三阶段:学习Jquery,这是当前流行的JS框架 里面提供了大量的拓展。学习基于JQuery之上的插件,比如bootstrap, 富文本编辑器。
3 从多角度去学习和领悟:(这个不太现实其实)
充分调动你所学的东西,从多角度去做某一功能,如:以前你是从面向过程角度做的,现在改为从面向对象的角度再来做,或者继续做成可以直接使用的插件,提供属性、方法等出来。争取让你做的这个功能逐渐能使用到实际项目中来。这样的好处:既综合应用了你的所学,又能有实际意义。
4 多写总结(之前些Swift的时候很有效果 而且还能调整思路)
这种总结不但包括源代码、显示效果截图,还应该很容易犯的错误和对应的解决方法以及最后一两句精简的结论性语句。对自己写的总结不是写完了就了事了,要多回顾、多改进、多精简。到做项目的时候,应该是看里面的一两句话就知道是讲什么了,而不要再去看长篇大论了。

总结一下:
按照这几个阶段 根据知识点思维导图 来把他们细分并且过一遍吧。