上面一篇文章,我们已经学会了基本的策略模式的书写,好,现在我们就来用些例子来巩固下
动画现在是页面上一个不可或缺的部分,它会为我们的网页增色不少,下面我们就用策略模式来实现缓动动画
1 | <!DOCTYPE html> |
html部分so easy,然后我们来看看js部分
1 | //缓动算法: |
上面我们先定义了一个缓动算法tween
这个我们也许并不陌生,最初来自flash,它包含四个参数: 动画已消耗的时间
,小球的原始位置
,小球的目标位置( 就是起始点与终点之间的距离)
,整个运动要消耗的时间
然后,我们定义一个动画类Animate
,有一个方法start
,用来设置传进来的参数以及判断运动是否已经结束,step
用来设置每一步要做的事,最后一个update
函数用来实时更新dom的状态
特别要注意的一个问题是
第36
行的this.startTime = +new Date;
这里前面必须不能遗漏这个+
,,他是将一个对象转换为Number类型,从而以便于与第58
行里面的this.startTime + this.duration
这样子,他们相加后的结果还是number
,不然如果是一个对象,那么这个判断永远是false
,dom不会停下,,有的人会说55行不也有个new Date
吗,也要前面加上+
?这里倒是不需要,具体可以自己试试,总结一句话: +new Date就是被对象转换为 Number
懂了上面的例子后,我们最后来看下我们常见的表单验证是如何与策略模式结合的
1 | <!DOCTYPE html> |
1 | var strategies = { |
具体的你们自己去细细品味吧~~
好了,策略模式,我们就交流到这,如其中有错误的,欢迎指出^_^
最后祝大家新年快乐,万事如意~~
学习自
曾探的《Javascript设计模式与开发实战》