DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript函數內部屬性和函數方法實例詳解
JavaScript函數內部屬性和函數方法實例詳解
編輯:關於JavaScript     

函數是由事件驅動的或者當它被調用時執行的可重復使用的代碼塊。

函數是對象,有自己的屬性和方法 。首先通過console下輸出的函數屬性方法來直觀的看一下:

函數內部屬性只要包括兩個特殊的對象:arguments和this。

函數屬性包括:length和prototype

函數方法(非繼承)包括:apply()和call()

繼承而來的函數方法:bind()、toString()、toLocaleString()、valueOf()

其他的目前不熟,後面再補充

1. 函數內部屬性

在函數內部,有兩個特殊的對象,arguments和this。

arguments屬性

arguments是一個類數組對象,包含傳入函數的所有參數,arguments的主要用途是保存函數參數,但這個對象有一個callee屬性,該屬性是一個指針,指向擁有這個arguments對象的函數,下面是非常經典的階乘函數。

function factorial (num){
if(num <= 1){
return 1;
} else{
return num * factorial(num-1); 
}
}

定義階乘函數一般都會用到遞歸算法,如上面代碼所示,在有函數名字,並且函數名字以後也不會改變的情況下,這種定義沒問題。但是這個函數的執行與函數名factorial緊緊耦合在了一起,為了消除這種緊密耦合現象(函數名字改變等情況),可以使用arguments.callee。

function factorial(num){
if(num<=1){
return 1;
} else{
return num * arguments.callee(num-1);
}
}

重寫後的factorial()函數的函數體內,沒有再引用函數名factorial。這樣即使改變函數名字,都可以保證正常完成遞歸調用。例如:

var trueFactorial = factorial; //改變原函數體的指針(保存位置)
factorial = function (){ //factorial 指向返回0的新函數
return 0;
}
alert(trueFactorial(5)); //120
alert(factorial(5)); //0

如果,不使用arguments.callee,那麼trueFactorial(5)同樣返回0;

this屬性

2. 函數的方法

每個函數都包含兩個非繼承而來的方法:apply()和call()。這兩個方法的用途都是在特定的域中調用函數(看到這裡木有看懂);其真正強大之處在於能夠擴充函數賴以運行的作用域

關於JavaScript函數內部屬性和函數方法的相關知識,小編就給大家介紹這麼多,希望對大家有所幫助!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved