javascript 文字闪烁

早上突然看到CSS里面的text-decoration属性的时候,发现blink仅有的火狐浏览器都不支持了.于是想使用js来实现这一效果.

 1 <script type="text/javascript">
 2     var i = 0;
 3     function getColor(){
 4         i++;
 5         switch(i){
 6             case 1: return "#FF0000";
 7             case 2: return "#FF6600";
 8             case 3: return "#3366CC";
 9             default: return "#000000";
10         }
11     }
12     function colorful(){
13         var o = document.getElementById("active");
14         o.style.color = getColor();
15         if(i==3){
16             i=0;
17         }
18         setTimeout("colorful()",1000);
19     }
20     colorful();
21 </script>

可是看着自己的代码感觉自己写的还是很low.于是在网上查找JS如何封装?于是进行一番深入学习.

1.定义js类

js并不是一种面向对象的语言,没有提供对类的支持.因此,我们不能像传统的语言那样使用class来定义类,但是我们可以使用js的闭包封装机制来实现js类,我们来封装一个简单的shape类:

代码如下:

 1 <script type="text/javascript">
 2     /*
 3     我们定义两个方法show和init,需要注意的是这里使用this来声明,而不是var.因为var使用来定义私有方法的.
 4     */
 5     function BaseClass(){
 6         this.show = function(){
 7             alert("BaseClass show");
 8         }
 9         this.init = function(){
10             alert("BaseClass init");
11         }
12     }
13     /*
14     现在类写好了,我们写个js来测试一下,看看看结果是不是跟我们想想的一样?
15     */
16     function test(){
17         var s = new BaseClass();
18         s.init();
19         s.show();
20     }
21 </script>

效果截图:

    

看到了这个结果,其实和C#的调用方式是一样的.

到目前为止,我们学会了如何创建JS类了.其实创建JS还可以这样写.

 1     //第一种方法
 2     function BaseClass(){
 3         this.show = function(){
 4             alert("BaseClass show");
 5         }
 6         this.init = function(){
 7             alert("BaseClass init");
 8         }
 9     }
10     //第二种方法:prototype属性来定义BaseClass
11     BaseClass.prototype.show = function(){
12         alert("BaseClass show");
13     }
14     BaseClass.prototype.init = function(){
15         alert("BaseClass init");
16     }
17     //上面这种写法不直观,可以将所有的方法写到一起
18     BaseClass.prototype = function(){
19         show: function(){
20             alert("BaseClass show");
21         },
22         init:function(){
23             alert("BaseClass init");
24         }
25     }
posted @ 2016-08-25 14:24  SkyTeam_LBM  阅读(350)  评论(0编辑  收藏  举报