javascript js 入门 2

javascript js 入门 二

继续上文 语法遍:

一、 数组

定义一个数组,两种方式 要不用 var arr1 = new Array(); 或者用 var arr2 = []; 显然第二次定义数组方便。

定义数组并初始化, 可以直接用 var arr3 = ["abc" , "bcd" , 18 , 12.98 , true] ; // 注意 数组中可以存放任意类型数据,不一定非得是同一类型数据。

获取数组长度 用 数据名.length。 数组中,还可以直接 arr3[6] = "bdsaf" ; 这样arr3 数组会自动扩容,变成7个元素数组了。注意arrs[5]会是一个undefine的常量。

遍历数组:

for(var i=0; i< arrs.length; i++){

document.write("arrs["+i+"]="+ arrs[i] +" <br />");

}

二、函数

函数与数组一样,都是当成对象来看待着(如上面arrs3看类型,可以用 alert(typeof(arr3)); )。函数定义有格式为:

function 函数名(函数参数列表){

函数体
}

调用函数是,可以直接用 函数名(实参列表); 如

function add(x,y){
  return x + y
}

调用add(3,4); 注意若写在 add(3,5,6)也可以调用上面的函数,返回结构是8,那传3个参数过去后,在函数体中会不会丢失参数呢。 其实不会,因为函数体中有个内置的arguments数组,这个数组会记录所以传入进来的参数。 只要遍历这个数组,一样也可以拿到第三个参数6。

上面说到函数也是对象,那么函数名其它是此对象引用的一个地址值。也就是你可以进行如下操作。

var ss = add; // 这个动作 会把 add函数的地址值,赋值给ss变量了,那么若alert(ss),会调用ss引用变量的toString方法,即add的toString会把函数签名体都打印出来。

而且可以这样的调用 ss(3,9) 也会返回12.

2.2 动态函数

var add = new Function("x,y","var sum; sum=x+y; return sum;");

var he = add(4,8);


2.3 匿名函数

常用如窗口的onload,或unonload等事件上,当然也可这样用:

var add3 = function (a,b){
    return a+b;
}
alert(add3(7,8));

三、变量的作用范围 作用域

. 一般只要在script中定义的变量都是全局变量,当然函数体中定义的变量,与函数的形参变量除外,他们是局部变量。


 for(var i=0; i< arrs.length; i++){

     document.write("arrs["+i+"]="+ arrs[i] +"  <br />");

}
//可以在循环外,使用循环中声明的变量i
document.write("i="+i);

四、String对象

定义 可以直接var str = "abc" ; 当然也可以笨笨的使用 var str = new String("abc");

String的长度,可以直接使用length属性的,与java区别开来,不是方法哦。 alert(str.length);
常用的几个方法 str.bold(); 会在str字符前后加个 b 加粗的标签, str.fontcolor("red"),可以指定str字符串文本的颜色呢。 str.link(http://ww...) 可以链接到...呢。

如:自定义一个去string空格的函数

/*
 * 发现js中的string对象方法有限,想要对字符串操作的其他功能。 
 * 比如:去除字符串两端的空格。这时只能自定义。
 */
//去除字符串两端的空格。
function trim(str){
 //定义两个变量,一个记录开始的位置。一个记录结束的位置。
 //对开始的位置 的字符进行判断,如果是空格,就进行递增,直到不是空格为止。
 //对结束的位置 的字符进行判断,如果是空格,就进行递减,直到不是空格为止。
 //必须要保证开始<=结束,这样才可以进行截取。
 var start,end;
 start=0;
 end=str.length-1;
 
 while(start<=end && str.charAt(start)==' '){
  start++;
 }
 while(start<=end && str.charAt(end)==" "){
  end--;
 }
 return str.substring(start,end+1);
}

五、prototype属性 原型属性

原型:就是该对象的一个描述。该描述中如果添加了新功能。那么该对象都会具备这些新功能。而prototype就可以获取到这个原型对象。通过prototype就可以对对象的功能进行扩展。

如:需求给String对象 增强一个功能,可以去除掉空格,那么可以使用原型来搞定了。 具体代码如下 :

String.prototype.trim = trim; //搞定。当然若没有已经定义好的trim时,要自己弄了。
//如String.prototype.trim = function (xx){...}

定义了这个原型,接着就可能直接使用trim功能了。如:

alert("-"+"     ab cd     ".trim()+"-");

六、数组基本操作

/*
 * 演示数组。
 */
var arr = ["nba","haha","cba","aaa","abc"];
var arr2 = ["qq","xiaoqiang",70];
//在arr数组上连接一个元素"mm",再连接一个arr2数组。
var newArr = arr.concat("mm",arr2);//将mm作为新数组中的元素,将arr2数组中的元素也作为新数组中的元素。

println(arr.join("-")); //join方法,默认是,连接数组的,可以使用- 来替代,的呢。

//移除数组中的元素,并返回该元素。pop

println(arr);
println(arr.pop());//删除并返回最后一个元素。
println(arr);

println(arr.reverse());

println(arr.shift());//删除并返回第一个元素。
println(arr);
var temp = arr.splice(1,3,8080,9527,"xixixi","wangcai");//删除元素并可以进行元素的替换。
println(arr.unshift("abcd3")); //将abcd3加放在数组的首位中。
fucntion println(obj){
 document.write(obj+"<br />")
}

八、数组的原型, 与String的原型是同一个道理的,可以对Array对象方法增强,弄出多个方法来。 如

Array.prototype.getMax = function() {
var tempIndex = 0;
for(var i=1;i<this.length;i++){
if( this[tempIndex]<this[i]){
tempIndex = i;
}

}
return this[tempIndex] ;

}

var arr1 = [23,434,65,11,0] ; var maxE = arr1.getMax(); //搞定。

九. Math对象

重点记住 floor方法、ceil方法、pow方法,其实这三个方法很多语言中都有了, floor是地板低端了点了, 所以像 Math.floor(12.34) 会得到12。而

ceil是屋顶 天花板,比较高端哦, 所以 Math.ceil(12.34) 会得到13呢。 而 Math.pow(10,2) 返回100。 注意Math中的所有方法都是静态的呢。

十、全局Globe对象方法。 其实不存在对象了,方法可以直接写了不用在前面加对象名: 如 parseInt方法和isNaN方法:

parseInt("123");
/*
 * 演示global的全局方法。
 */
println(parseInt("123")+1);

var val = parseInt("12abc");//val = 12;

println("value="+isNaN(val));//通过isNaN来判断结果是否非法。

/*
 * 将指定进制格式的字符串转成十进制。 
 */
var num = parseInt("110",2);

println("num="+num);

var num1 = parseInt('0x3c',16);
println("num1="+num1);

//将十进制转成其他进制。使用数字对象完成。 

var num3 = new Number(6);

println("num3="+num3.toString(2));

var num4 = 60;
println("num4="+num4.toString(16));


十一、JS 新出来的语法 for in 结构 显示一个:

var arr = [32,80,65];
for(i in arr){  //若 arr是数组的话,那么i 代表的就是数组中的角标,而不是元素
	println("i="+arr[i]);
}

//注意若第二个参数arr位置放百是对象集合,则i就集合中的元素了。

未完,待续 下遍,介绍 JS 自定义对象。 很晚了,先睡觉了............


.