从一小段js讲起

做web比较久了,有些方面也有了些自己的认识,所以,抽空温习一下知识,也写给一些刚入门的同学看下.

如果有错,敬请大虾指正!

先看代码:

<p id="words">“神八”归来空间交会对接任务圆满成功 </p>
<script type="text/javascript">
dync('words');
function dync(o){
	var p=document.getElementById(o),colors=['#ff0000','#00ff00','#0000ff'];
	if(p){
		var w=p.innerHTML,i=0,t;
		setTimeout(function(){
			var f=arguments.callee;
			t=setInterval(function(){
				p.innerHTML=w.substr(0,i);
				i++;
				if(i>=w.length){
					i=0;
					clearInterval(t);
					t=setInterval(function(){
						p.innerHTML=w.fontcolor(colors[i]);
						i++;
						if(i>=colors.length){
							i=0;
							clearInterval(t);
							setTimeout(f,2000);
						}
					},500)
				}
			},200)
		},1000);
	}
}
</script>

效果很简单,将一段文字逐个显示,并交替变幻几种颜色.

所用到的知识点如下:

setTimeout/setInterval,arguments,string的若干方法

setTimeout/setInterval

setTimeout(code,millisec)(setInterval相同)

code:要调用的函数要执行的代码串.这里并不建议传入一个代码串(如:"alert('代码串');"),因为传入的代码在执行时环境是全局的,不利于优化,排错,封装.特别是封装

比较靠谱的做法是传入一个函数引用(就是函数名.),(注意:是函数引用,不带括号的),或者在比较特殊的情况下可以传入一个函数原型,就像我在代码里写的.好处是可以省略去定义一个函数.对于比较简单的函数,这样很方便,但如果是大堆代码的函数体,最好还要兼顾下性能.因为传入函数作为参数时只能传一个函数名称,没有办法带参数,所以我们需要带参时就可以用匿名函数的方法传入,如:setTimeout(function(){func(arguments)},delay);这里可以传字符串,或者当前执行域的私有变量.代码串是做不到的,代码串只能传递字符,或者全局的东西.

millisec:这个是以毫秒计的时间,比如:1000就代表1秒.

arguments

arguments是函数运行时的一个特殊变量,它包括了所有传入参数的集合,它对于新手来说是一个很神奇的东西.我也可以将它展开来写个几万字去讲述,但没必要,网上已经很多了,我当初也是看着那些讲述学习的.自己多动动脑,多动动手,就会明白了.

最常用到的属性和方法:length--参数的个数,[下标]--可以引用到该下标的参数,类似数组,callee--代表了函数本身,也是这个函数的引用,对于匿名函数很有用.

javascript就神奇在这里,它的参数是很灵活的,你可以在定义函数时不写,调用时就可以直接传入,也可以在定义时写上多个,调用时不传.非要重载做什么?它的变量本身是没有界限的,字符串可以变数字,数字也可以变函数,函数也可以变对象,对象又可以是json,这是它的优点,亦是它的缺点.

string

string是个很简单的东西,虽然它有很多方法,但很多不经常用到,手册上都有很明确的说明.像那个fontcolor,只是用来炫耀的.

常用和必须会的几个方法:

slice,replace,split,indexOf

w3school上都有说明

http://www.w3school.com.cn/js/jsref_obj_string.asp

写的比较乱,不知道你们看明白了没,我是想明白了.呵呵