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 }