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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章