javascript基础篇--function类型(上)

 


js中,function类型实际上是对象,每个函数都是function类型的一个实例。而且与其他引用类型一样具有属性和方法。

 

声明


1普通方式


Function sum(num1,num2)
{
Return num1+num2;
}

2使用变量初始化函数


Var sum=function(num1,num2)
{
Return num1+num2;
 
}


以上两种方式是常用的方式,当然还有其他方式,但相比还是以上更优越。

定义函数,为的就是使用方便。这里只对内部属性进行简单了解

 

函数内部属性


任何函数内部,都有两个特殊的对象,arguments  this

arguments为数组对象,包含传递的所有参数。this是它所处对象的作用域。

arguments

例如

一个递归的函数调用
Functionsum(num){
  If(num<=1){
   Return 1;
}else{
  Return num*box(num-1);
 }
}
 

对于求和完全没有问题,倘若函数名修改了,那么递归中的函数就会报错了。所以为了解决这个问题,我们可以使用函数自身的 arguments.callee 解决。


Function sum(num){
If(num<=1){
      Return 1;
}else{
Return num*arguments.callee(num-1);
}
}

This使用

先前认为自己理解的很到位,但是我看到以下源码的时候还是有偏差的。

 

window对象是js中最大的对象,也是最外围的

所有全局的变量都是window的属性。所以就有

 

Varcolor='红色的'

Alert(this.color);

Alert(window.color) 

两者是相同的结果,这里color为全局变量,所以是window的属性。this代表的就是windows

 

Window.color='红色的'

Var box={
   Color:'蓝色的',
   sysColor:function(){
     Alert(this.color);
   }
}
 
alert(this.color);//此处的this外层是window对象,所以是windowcolor
box.sysColor();//box的color

======================================================================

Window.color='红色的'
 
Function sayColor(){
Alert(this.color);
//这里是一个动态的this,注意范围的变化
}
 sayColor();
 
Var box={
Color:'蓝色的'
}
Box.sayColor=sayColor;
Box.sayColor();//蓝色

以上对this的基本认识,也是最常用的范围变换,this代表包围它对象自身。

 

Call()apply()方法

 

表面上他们是对其他函数的调用,但是不要被他们的表象所迷惑了,真实作用是修改函数的作用域

 

Var color='红色的';
Var box={
Color:'蓝色的';
}
 
Function sayColor(){
Alert(this.color);
}
 saycolor();//红色
sayColor.call(this);//this为window//红色
sayColorcall(box);蓝色 ;冒充box,作用域就在box对象中


Call,apply的参数为

Apply(对象作用域,参数);

 

函数的定义,其最后还是为调用,那么调用的类型有哪些呢,

 

函数调用


1作为函数的返回值

与普通变量一样。

 

function box(sum,num){
returnsum+num;        
}
 
function sum(num){
returnnum+10;
}
 
varresult=box(sum(10),10);
alert(result);


 

这里我们可以看到输出的结果是30,这里sun返回的是一个具体的数值。

 

函数当做参数传递

对以上函数进行变型

function box(sum,num){
return sum(num);        
}
 
function sum(num){
returnnum+10;
}
 
var result=box(sum,10);
alert(result);

输出为20,还是一个数值,但是这里的参数sum已经不再是一个具体额的数值了,而是一个具体的函数。在box函数中,参数是一个sun函数。

 

小结:


该内容为funtion的内部的基本属性和方法的认识,js的函数与其他语言的函数是很相识的,也是源于object类型,期也有thisarguments等参数组。与main函数很是相识,对比j2ee中的函数以及其他语言的属性也是类型的,如未说明的lengthproperty属性等。

 

property原型,请参见下篇function介绍

 

 

 

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值