函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function
1 申明与定义
显示声明:function cc(){};函数名其实是函数的一个指针,函数名某种意义上也就是function类型的一个变量,对于显示什么的函数,不管函数在文档什么位置都糊被js引擎预先加载到编译环境栈中;
也就是申明自动提前
函数表达式:var fun=function(){};对于表达式函数,起本质上变量指向了一个函数,但是呢,这个函数申明不会被提前加载到js引擎中提前编译
2 函数成员
this:this在js中是一个灵活多变的玩意儿,它指向的函数运行域对象,说起这个域对象其实是个比较难理解的东西;要理解this指向谁,只需明白谁调用了该函数,this就指向谁
argument:该对象存储了函数的所有形式参数,argument.callee该函数指向了函数本身,这个属性往往用于函数递归调用;
function sum(m){
if(m>0){
return m+argument.callee(m-1);
}
else{
return 1;
}
}
prototype:函数的原型对象,是函数的一个非常非常重要的成员
3 函数属性和方法
length:函数参数的个数
call:调用方式,var fun=sum;fun.call(this,*,*),这里第一个参数均为上下文this对象,在这里可以改变this的指向,对于函数的形式参数这里要求一一列举出来
apply:与call不同的是形式参数不用一一列举出来,如 func.apply(this,func.argument)
bind:bind与call和apply不同的是bind将函数又变成一个变量,且可以改变函数的this,如sum.bind(o);
4 函数的特性
函数不具有重载性
函数可以作为变量:作为函数的返回值,函数的形式参数;
js中函数作为面向对象程序设计具有非常重要的基础,而函数也是最为复杂的类型之一,其中函数嵌套,闭包,面向对象,继承,多态等待等。