JavaScript 脚本语言中所有的数据类型、数组等均可作为对象对待,函数也不例外。可以使用new 操作符和Function 对象的构造函数Function()来生成指定规则的函数,其基本语法如下:
var funcName = new Function (arguments,statements;);
值得注意的是,上述的构造函数Function()首字母必须为大写,同时函数的参数列表与操作代码之间使用逗号隔开。考察如下测试代码:
//源程序2.21
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
" http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\n 使用构造函数Function 构造函数 : \n\n";
//使用new 操作符和Function()构造函数生成函数newFunc()
var newFunc=new Function("result","alert(msg+' '+result)");
//响应按钮的onclick 事件处理程序
function Test()
{
msg+="生成语句: \n";
msg+="var newFunc=new Function(''result'',''alert(msg+result)''); \n"
msg+="调用语句: \n";
msg+="newFunc(''Welcome to JavaScript World!'');\n";
msg+="返回结果: \n";
newFunc("Welcome to JavaScript World!");
}
-->
</script>
</head>
<body>
<center>
<form>
<input type=button value="测试" οnclick="Test()">
</form>
</center>
</body>
</html>
程序运行后,在原始页面单击“测试”按钮,弹出警告框如图2.33 所示。
图 2.33 作为对象的函数
通过 new 操作符和Function()构造函数定义函数对象时,并没有给函数赋予名称,而是定义函数后直接将其赋值给变量newFunc,并通过newFunc 进行访问,与通常的函数定义不同。
注意:在定义函数对象时,参数列表可以为空,也可有一个或多个参数,使用变量引用该函数时,应将函数执行所需要的参数传递给函数体。
作为对象的函数最重要的性质即为它可以创建静态变量,给函数增加实例属性,使得函数在被调用之间也能发挥作用。考察如下测试代码:
//源程序2.22
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
" http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\n 作为对象的函数创建静态变量 : \n\n";
function sum(x,y)
{
sum.result=sum.result+x+y;
return(sum.result);
}
sum.result=0;
//响应按钮的onclick 事件处理程序
function Test()
{
var tempData;
msg+="调用语句及返回结果: \n";
tempData=sum(2,3);
msg+="语句 : tempData=sum(2,3);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
tempData=sum(4,5);
msg+="语句 : tempData=sum(4,5);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
tempData=sum(6,7);
msg+="语句 : tempData=sum(6,7);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
alert(msg);
}
-->
</script>
</head>
<body>
<center>
<form>
<input type=button value="测试" οnclick="Test()">
</form>
</center>
</body>
</html>
程序运行后,在原始页面单击“测试”按钮,弹出警告框如图2.34 所示。
图 2.34 创建静态变量
由上述结果可以看出,作为对象的函数使用静态变量后,可以用来保存其运行的环境参数如中间值等数据。
var funcName = new Function (arguments,statements;);
值得注意的是,上述的构造函数Function()首字母必须为大写,同时函数的参数列表与操作代码之间使用逗号隔开。考察如下测试代码:
//源程序2.21
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
" http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\n 使用构造函数Function 构造函数 : \n\n";
//使用new 操作符和Function()构造函数生成函数newFunc()
var newFunc=new Function("result","alert(msg+' '+result)");
//响应按钮的onclick 事件处理程序
function Test()
{
msg+="生成语句: \n";
msg+="var newFunc=new Function(''result'',''alert(msg+result)''); \n"
msg+="调用语句: \n";
msg+="newFunc(''Welcome to JavaScript World!'');\n";
msg+="返回结果: \n";
newFunc("Welcome to JavaScript World!");
}
-->
</script>
</head>
<body>
<center>
<form>
<input type=button value="测试" οnclick="Test()">
</form>
</center>
</body>
</html>
程序运行后,在原始页面单击“测试”按钮,弹出警告框如图2.33 所示。
![2011081782022313.png](http://www.skyasp.net/upFiles/infoImg/2011081782022313.png)
图 2.33 作为对象的函数
通过 new 操作符和Function()构造函数定义函数对象时,并没有给函数赋予名称,而是定义函数后直接将其赋值给变量newFunc,并通过newFunc 进行访问,与通常的函数定义不同。
注意:在定义函数对象时,参数列表可以为空,也可有一个或多个参数,使用变量引用该函数时,应将函数执行所需要的参数传递给函数体。
作为对象的函数最重要的性质即为它可以创建静态变量,给函数增加实例属性,使得函数在被调用之间也能发挥作用。考察如下测试代码:
//源程序2.22
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
" http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\n 作为对象的函数创建静态变量 : \n\n";
function sum(x,y)
{
sum.result=sum.result+x+y;
return(sum.result);
}
sum.result=0;
//响应按钮的onclick 事件处理程序
function Test()
{
var tempData;
msg+="调用语句及返回结果: \n";
tempData=sum(2,3);
msg+="语句 : tempData=sum(2,3);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
tempData=sum(4,5);
msg+="语句 : tempData=sum(4,5);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
tempData=sum(6,7);
msg+="语句 : tempData=sum(6,7);";
msg+="结果 : tempData = "+tempData+" sum.result = "+sum.result+"\n";
alert(msg);
}
-->
</script>
</head>
<body>
<center>
<form>
<input type=button value="测试" οnclick="Test()">
</form>
</center>
</body>
</html>
程序运行后,在原始页面单击“测试”按钮,弹出警告框如图2.34 所示。
![2011081782098161.png](http://www.skyasp.net/upFiles/infoImg/2011081782098161.png)
图 2.34 创建静态变量
由上述结果可以看出,作为对象的函数使用静态变量后,可以用来保存其运行的环境参数如中间值等数据。