
在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類型,期也有this和arguments等參數組。與main函數非常是相識,對照j2ee中的函數以及其它語言的屬性也是類型的。如未說明的length,property屬性等。
property原型,請參見下篇function介紹