首页 > 网站 > WEB开发 > 正文

JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

2024-04-27 14:16:36
字体:
来源:转载
供稿:网友

JS中的函数,Array对象,for-in语句,with语句,自定义对象,PRototype

一)函数

A)JS中的函数的定义格式:

functionadd(a,b)

{

varsum=a+b;

document.write("两个数的和是:"+sum);

//returnsum;

}

上面只是一个例子,那么当我们再定义一个同名的函数会怎么样呢?

functionadd(a,b,c)

{

varsum=a+b+c;

document.write("三个数的和是:"+sum);

}

然后调用函数:

add(50,30,10);输出结果:三个数的和是:90

add(50,30);输出结果:NaN

上述例子说明了在javascript中是没有函数重载的概念的,后定义的同名函数会覆盖前面的同名函数。

B)

让我们了解一下函数的调用过程:

Javascript中调用一个函数的时候传递进去的实参,并不是马上传递给形参的,而是会把实参的数据封装到函数中的arguments数组中。然后再从arguments数组中分配数据给形参。

那么我们写一个测试函数:

functiontest(a,b){

//任何一个函数都隐式维护了一个arguments的数组对象在里面

for(varindex=0;index<arguments.length;index++){

document.write(arguments[index]+",");

}

}

test(10,30,"abc");

输出结果:10,30,abc,

虽然test()函数只接收两个参数,但是会先把3个实参都传给arguments数组。

二)Array对象

Array对象中有两个比较特殊的方法,下面分析一下:

A)sort()方法:该方法按照指定的排序的方法排序,该方法接收一个参数,我们在使用的时候可以传入一个排序时的比较方法:

//排序方法

functionsortArr(num1,num2){

returnnum1-num2;

}

然后调用

arr.sort(sortArr);//注意:传递方法的时候不能加上双引号以及小括号。

B)join()方法:把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。

这个方法返回一个字符串,我们可以利用这个方法把数组转换为字符串类型。

Arr.join(“”);参数为空,那么字符间就没有分隔符。

三)在JS中有没有增强型for循环呢?有的,在JS中增强型for循环叫做for-in语句。

for-in语句的格式:

for(var变量in遍历的目标){

}

for-in语句的作用对象:

1.可以用于遍历一个数组的元素。

2.可以用于遍历一个对象的所有成员。

注意事项:

1.使用for-in语句遍历一个数组对象的时候,遍历出来的是数组的索引值。

2.使用for-in语句遍历一个数组对象的时候,遍历出来的是对象的属性名。

所以,要得到数组元素的值,必须以遍历的索引为脚标把元素值去取出来。

示范代码:

vararr=[12,15,18,20,22];

for(vartempinarr){

document.write(arr[temp]+",");

}

同理,以对象的属性名为脚标,用对象名[属性名]这个格式把属性值取出来:

varp=newPerson(110,"狗娃");

for(variteminp){

document.write(item+"="+p[item]+",");

}

四)with语句

当有一个地方需要大量调用一个对象的方法时,我们就可以用with语句减轻代码量。

使用格式:

with(对象){

//直接使用对象的属性或者方法,不需要再重新指定对象。

}

示例:

with(Math){

document.write("绝对值:"+abs(-3.14)+"<br/>");

document.write("向上取整:"+ceil(-3.14)+"<br/>");//-3

document.write("向下取整:"+floor(-3.14)+"<br/>");//-4

document.write("随机数:"+random()+"<br/>");//

document.write("四舍五入:"+round(3.46)+"<br/>");//

}

这里调用的方法就不必写上Math.方法名了~

五)自定义对象

在javascript是没有类的概念的,在javascript需要定义对象时,只要有函数存在即可。

有函数就可以定义对象了。

自定义对象有很多种方法,下面将演示一下:

A)提供一个无参数的函数自定义对象:

functionperson()

{

//使用了person函数创建了一个对象了。

varp=newperson();

p.id=110;

p.name="狗娃";

p.eat=function(){

alert(this.name+"吃饭了...");

}

document.write("编号:"+p.id+"姓名:"+p.name);

p.eat();

在对象内部声明一个本体对象,然后设置它的各种属性,还可以设置这个对象的行为,上述代码就设置了eat()行为。

B)提供一个带参数的函数自定义对象:

functionperson(id,name)

{

this.id=id;

this.name=name;

this.eat=function(){

alert(this.name+"吃饭了...");

}

}

//创建对象

varp=newperson(110,"狗娃");

document.write("编号:"+p.id+"姓名:"+p.name+"<br/>");

varp2=newperson(119,"狗剩");

document.write("编号:"+p2.id+"姓名:"+p2.name+"<br/>");

通过使用this.属性=属性的方式为属性赋值,和Java中的构造方法类似;定义对象方法的格式通过this.方法名=function(参数){代码}来完成。

C)javascript给我们提供了一个无参的函数让我们创建对象。

//创建了一个对象

varp=newObject();

p.id="110";

p.name="狗娃";

这个无参的函数就是Object(),我们通过new一个Object生成一个对象,然后就能设置这个对象的属性跟方法了。

D)使用字面量的方式创建对象

varp={

id:110,

name:"狗娃",

eat:function(){

alert(this.name+"吃饭了...");

}

}

document.write("编号:"+p.id+"姓名:"+p.name+"<br/>")

p.eat();

直接声明一个变量,然后再赋值号的右边用中括号编写对象的属性,这时候属性赋值要用:号而不是=号。

六)Prototype(原型)

在JAVA中,每一个类都有一个Class对象,相似的,JS中有一个叫Prototype的属性,它的值是一个对象。

而重点在于,当你获取到了一个函数的ProtoType的属性的时候,你可以给这个属性指向的对象添加一个方法或者属性,

当你给Prototype添加方法或者属性的时候,那么Prototype所属的函数会自动拥有Prototype的所有属性或者方法。也就是说,我们可以往JS自带的对象中添加方法了!

下面我们给Array对象添加两个方法:把searchEle与getMax方法添加到Array函数上,如果添加到了Array函数上,那么以后我们的数组对象就可以直接使用这两个方法了。

Array.prototype.searchEle=function(element){

for(varindex=0;index<this.length;index++){

if(this[index]==element){

returnindex;

}

}

return-1;

}

//Array.prototype得到prototype对象,然后添加searchEle方法。

//再给Array方法再添加一个getMax方法

Array.prototype.getMax=function(){

varmax=this[0];

for(varindex=1;index<this.length;index++){

if(this[index]>max){

max=this[index];

}

}

returnmax;

}

vararr=newArray(12,14,19,10);

varindex=arr.searchEle(19);

varmax=arr.getMax();

document.write("找到的元素索引值是:"+index+"最大值:"+max);


上一篇:javascript 拖放效果

下一篇:tooltips插件

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表