标题:创建Function类型 前面加new和不加new有什么区别?
只看楼主
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
结帖率:90.91%
 问题点数:0 回复次数:5 
创建Function类型 前面加new和不加new有什么区别?
下满两段代码执行结果一样,Function 前面 加new和不加new有什么区别
//代码1
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT text/language="JavaScript">

function dwf(s)
{
    document.write(s+"<br/>")
}
var squre=new Function("x","return x*x");

dwf(squre(3));
dwf("testfunction begin")
function testfunction(a,b,c,f)
{
    return f(a,b,c);
}
<BODY>
<SCRIPT text/language="JavaScript">

function dwf(s)
{
    document.write(s+"<br/>")
}
var squre=new Function("x","return x*x");
//这里的Function前加new和不加new有什么区别

dwf(squre(3));
dwf("testfunction begin")
function testfunction(a,b,c,f)
{
    return f(a,b,c);
dwf(testfunction(1,2,3,new Function("a,b,c","return a+b+c")))
//这里的Function前加new和不加new有什么区别
dwf("testfunction end")
document.write("End"+"<br/>");
</SCRIPT>
</BODY>
</HTML>

//代码2
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT text/language="JavaScript">

function dwf(s)
{
    document.write(s+"<br/>")
}
var squre=new Function("x","return x*x");

dwf(squre(3));
dwf("testfunction begin")
function testfunction(a,b,c,f)
{
    return f(a,b,c);
}
dwf(testfunction(1,2,3,new Function("a,b,c","return a+b+c")))
dwf("testfunction end")
document.write("End"+"<br/>");
</SCRIPT>
</BODY>
</HTML>
搜索更多相关主题的帖子: new Function 类型 
2010-03-14 14:18
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
得分:0 
不好意思,第一个代码给错了

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT text/language="JavaScript">

function dwf(s)
{
    document.write(s+"<br/>")
}
var squre=Function("x","return x*x");//这里没有 new

dwf(squre(3));
dwf("testfunction begin")
function testfunction(a,b,c,f)
{
    return f(a,b,c);
}
dwf(testfunction(1,2,3,Function("a,b,c","return a+b+c")))//这里没有 new
dwf("testfunction end")
document.write("End"+"<br/>");
</SCRIPT>
</BODY>
</HTML>
2010-03-15 11:21
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
得分:0 
这里我自问自答啦,刚刚找到了答案,

作为类型来看,Function 是构造函数,可以通过字符串动态构造出函数对象。

如果把 Function 作为函数来看待,即省略NEW 操作符,可以得到同样的效果

在 JavaScript 中,Function即是函数,也是类型,是所有函数的类型
2010-03-15 16:03
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
得分:0 
创建函数实例的方式大体3种
1.声明式
function a(){...}
2.定义式
var a = function(){...}
3.构造函数式
语法如下
functionName = new Function( [argname1, [... argnameN,]] body );
此方式极不常用,据说这么创建一个函数的人,除非是想找抽- -
2010-03-15 16:12
观星
Rank: 2
等 级:论坛游民
帖 子:77
专家分:45
注 册:2008-5-1
得分:0 
回复 4楼 foktime
呵呵,我见过一些例子,发现这样创建函数的方法也挺有用的

Function构造用于动态生成函数的脚本,可以方便的由字符串生成函数
2010-03-16 08:20
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
得分:0 
以下是引用foktime在2010-3-15 16:12:10的发言:

创建函数实例的方式大体3种
1.声明式
function a(){...}
2.定义式
var a = function(){...}
3.构造函数式
语法如下
functionName = new Function( [argname1, [... argnameN,]] body );
此方式极不常用,据说这么创建 ...
第3种完全不知道。。。
2010-03-16 08:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-299386-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.134154 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved