咱们看各类各样的书籍,有讲原理的,也有讲实例的,你会发现里面讲的逻辑很是清晰,有时候你可能会困惑,他们怎么会想到用这个方法呢。其实这就是一我的的思考过程了。面试
首先在准备制做一个特效前,你脑子里就得思考整个特效的全过程(工做过程:鼠标点击某个菜单,这个菜单若是是显现状态就变成隐藏,若是是隐藏的就变成显现)。算法
知道了工做流程,下面就得解决每一步的疑问了。怎样知道是鼠标单击双击呢(click鼠标单击事件),怎样知道点的那个菜单呢(event对象),又怎样判断菜单目前的状态呢(设定条件并判断),状态表现出来是利用了标签属性的什么原理呢(display:none block;或者visibility:hidden visible;会占用原来的空间)。编程
最后应该怎样来实现这个全过程:用编程语言将思考的过程描述出来。设计模式
HTML代码浏览器
<div id="menu"> <ul> <li></li> <li></li> <li></li> </ul> </div>
JavaScript代码网络
(1)给每一个对象绑定事件 var oLis=document.querySelectorAll("#menu>ul>li"); oLis.forEach(function (item) { item.addEventListener('click', function(){ item.style.display =(item.style.display == "none" )? "block" : "none"; }, false); }); (2)事件委托(一次绑定,永久使用) var oDiv=document.querySelectorAll("#menu"); function () { oDiv.addEventListener('click', function(event){ event=event ||window.event; target=event.target||event.srcElement; target.style.display =(target.style.display == "none" )? "block" : "none"; }, false);
1.只要你坚持下去,写代码就是那没简单,记住三个词:闭包
借鉴:多阅读,多分析,多学习一些成功的JavaScript的代码,多逛一些JavaScript类的技术社区,论坛,博客等,多与一些技术牛人学习,借鉴其经验和思路。 多思考:思考的深度决定了代码的质量,所以多思考,多问几个为何在很大的程度上能够提升代码的质量 多动手练习:实践检验真理
2.JavaScript的基本设计策略:架构
写代码的前中后时,问三个问题:作什么?谁作?怎样作?dom
应用程序的功能是什么?编程语言
这个应用程序要作什么?尽可能具体一点,假设你想要在发送Email的时候使用一个HTML表单,考虑如下问题。 表单将包括多少域 本身输入Email地址仍是从一个列表中选取 发送以前是否想要确认一下表单输入?你打算肯定什么内容?消息?Email地址?仍是两个都确认 发送Email后发生什么事?是让用户转到另一个页面仍是什么也不用作 多思考诸如此类的问题,你将会获得一个很是好的计划
访问者是谁
使用什么浏览器 使用什么浏览设备,显示器分辨率 使用哪一种类型的网络链接 应用程序中的JavaScript方法 应用程序要解决什么问题,可否实现我要的功能 尽量的重复使用代码,从一个地方粘贴到另外一个地方可否使用 按时间顺序定义函数 每一个函数执行一个单一的操做 使用尽量多的局部变量
3.编程的首要原则(s)是什么?
学习一项知识,必须问本身三个重要问题:
先弄清你的问题是什么!弄清问题永远是问题解决过程当中的第一步和最重要的一步。代码只是工具,不是手段。
不知道怎么最好地解决你手头的问题(注:需求、架构、算法,技术选型,etc..),写上一万坨代码也是浪费比特。知道何时不应编码。
要把知识梳理成系统的结构,要让头脑中的知识层次清楚
1.学习知识时,一章一章学的时候,感受挺有收获,也挺容易的。跟着实例,或者按照别人教的方法更是感受到很是有成就感,以为都懂了,可是要求你脱离资料,独自解决问题时,你老是会犯难。
短暂的记忆,未通过验证的自我良好感受是具备欺骗性的
那就是找点问题来问问本身,看看本身是否是真真的牢固的掌握了,仍是只是自我良好的感受而已。经过测试立马就知道本身的能力如何,把本身的问题给暴露出来,因此测试仍是挺有用的。
2.重要的事情优先。尽可能避免杂事骚扰,不重要的事情能不作就不作。
3.学习东西必定得多问本身几个问题,尤为是那些你一看就明白
为何这种解法是对的? 为何那种解法是错的? 为何这种解法不是最优的? 证实为何没有更优的解法? 这个东西有什么用,可以解决什么问题,还只是好玩而已?
若是你感受本身JavaScript学的不错了,不妨本身考考本身,验证验证有没有自欺欺人。
如何实现闭包? 为何事件有冒泡捕获? 浏览器之间有何差别? 何为dom,bom,有什么区别? JavaScript的function原理是什么? 浏览器有那些JavaScript引擎? 是否定识!、||、三元操做符、单链式写法、申明变量的缩写方法、惰性载入? 如何判断浏览器是否支持HTML5? 如何开发出跨设备,兼容性的代码? 如何在不一样浏览器中调试代码? DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。 JS变量提高、匿名函数、原型继承、做用域、闭包机制等。 有哪些js设计模式
学习编程就是学习一种思考方式,学习看透事物本质的一种锻炼,只有不断学习代码才能知道怎样写出更好的代码,没事多问问本身问题。专一,少些浮躁,坚决信念,才能走的跟高更远。