JavaScript Function對象

函數實際上是功能完整的對象,所有函數都應看作 Function 類的實例,Function 類可以表示開發者定義的任何函數。

1. 創建

第一種方式:

<script>
	//函數名就可以當做一個Function對象來使用
	function 函數名(arg1, arg2, ..., argN){
		//方法體
	}
<script>

第二種方式:

<script>
	//定義一個變量指向Function對象
	var 變量名 = function 函數名(arg1, arg2, ..., argN){
		//方法體
	}
<script>

第三種方式:

<script>
	//定義一個變量接收Function對象
	var 變量名 = new function(arg1, arg2, ..., argN, function_body)
<script>

示例:

<script>
	//定義一個變量接收Function對象
		var f = new Function("a", "b", "alert(a+b);");
        f(1,2);//彈出結果 3
<script>

注意: 儘管可以使用 Function 構造函數創建函數,但最好不要使用它,因爲用它定義函數比用傳統方式要慢得多。

2. 屬性

使用Function對象的length屬性可以獲得方法形參的個數。

<script>
	function f(a,b) {
        }
    alert(f.length);//彈出結果 2
<script>

3. 方法:

在這裏插入圖片描述

4. 特點:

  • 因爲都是使用var定義形參,所以形參的類型可以省略。
  • 方法是一個對象,如果定義名稱相同的方法,會覆蓋。
	<script>
        function add(a,b) {
            alert(a + b);
        }
        //即使參數個數不同也會覆蓋
        function add(a,b,c) {
            alert(a + b + 10);
        }
        add(5,5);//結果20。注意:沒有傳值給形參c,c被默認賦值爲undefined
    </script>

由上可知: 方法的調用只與方法的名稱有關,和參數列表無關。

  • 在方法聲明中有一個隱藏的內置對象 arguments(數組),封裝所有的實參。
	 <script>
	 	//計算n個數的和
        function sum() {
            let res = 0;
            /*for (let argument of arguments) {
                res += argument;
            }*/
            for (var i = 0; i < arguments.length; i++) {
                res += arguments[i];
            }
            alert(res);
        }
        sum(1, 2, 3, 4, 5);
    </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章