构造函数

课后整理 2020-12-10

使用Function()构造函数可以快速生成函数。具体用法如下:

var funName = new Function(p1, p2, ..., pn, body);

Function()的参数类型都是字符串,p1~pn表示所创建函数的参数名称列表,body表示所创建函数的函数结构体语句,在body语句之间通过分号进行分隔。

【示例1】可以省略所有参数,仅传递一个字符串,用来表示函数体。

var f = new Function("a", "b", "return  a+b");      //通过构造函数来克隆函数结构 

在上面代码中,f就是所创建函数的名称。同样是定义函数,使用function语句可以设计相同结构的函数。

function f(a, b){                                        //使用function语句定义函数结构 
    return a + b;
}

【示例2】使用Function()构造函数可以不指定任何参数,创建一个空函数结构体。

var f = new Function();                              //定义空函数 
【示例3】在Function()构造函数参数中,p1~pn是参数名称的列表,即p1不仅能代表一个参数,它可以是一个逗号隔开的参数列表。下面的定义方法是等价的:
var f = new Function("a", "b", "c",  "return a+b+c")
var f = new Function("a, b, c", "return a+b+c")
var f = new Function("a,b", "c", "return  a+b+c")

【注意】

使用Function()构造函数不是很常用,因为一个函数体通常会包含很多代码,如果将这些代码以一行字符串的形式进行传递,代码的可读性会很差。

【提示】

使用Function()构造函数可以动态创建函数,它不会把用户限制在function语句预声明的函数体中。使用Function()构造函数,能够把函数当做表达式来使用,而不是当做一个结构,因此使用起来会更灵活。其缺点就是,Function()构造函数在执行期被编译,执行效率非常低。一般不推荐使用。