这个demo的学习过程很值得记录下来。css
前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件:html
http://www.codefans.net/jscss/code/3327.shtml git
功能:新建一个实例就是一个图片轮播,能够新建多个,可是实例与实例之间是干扰的。github
过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就能够了。本身就死磕地先写了原生,再改成面向对象。segmentfault
写原生的时候,遇到的问题:ide
不知道怎么样中止计时器:clearInterval、clearTimeout函数
设计计时器设计错了,以前我觉得设置一个setInterval为1000ms而后再设置一个setTimeout为1000ms。这样效果是出来了,可是很差控制;更好的设计是外面是一个setInterval为2000ms,里面也设一个setInterval为1000ms,而后用clearInterval来中止里面的那个学习
写的时候,逻辑很混乱,不过呢,如今回想起来,把最小的单位功能先写出来,再考虑其余功能与这个子功能的关系,这样写的话比较容易理清楚他们的逻辑。(逻辑问题那晚都没理清楚,很沮丧,作了一些不理智的事情,也发现本身抵挫能力须要增强this
无论怎么,我写出来了。加油!.net
写面向对象的时候,遇到的问题:
http://segmentfault.com/q/1010000003746641
我想了好久,也没想出来,查不来,而后就问QQ群的人和上SF了,其实我排错的思路是正确的,找到错误是在哪部分上,可是我在那个部门没有注意细节,就是var _this=this!我没有加var!意味着_this是全局变量。
找到答案以后,再联系一下本身以前的猜测,就是什么让他们合并在一块儿了,我意味是prototype的问题,可是我直接把prototype干掉,放在构造函数里面,console.log出来的如出一辙!我就蒙了!之后就能够在这里找缘由。
总结:写程序的时候,除了逻辑,还有细节,这些细节,实际上是习惯,之后要多在习惯上面下苦工啊!
代码和图片都放在个人github里了:
https://github.com/Rockergmail/jsdemo/tree/objectorient/oo/picRobin