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