2013-03-18 46 views
2

我应该如何初始化Function constructor功能:JS中的函数构造函数初始化?

(两者似乎工作。)

这样的:

var t= new Function ("a","alert(a)"); 
t(3)//3 
alert(Object.prototype.toString.apply(t)); //[object Function] 

var t= Function ("a","alert(a)"); //without new 
t(3) //3 
alert(Object.prototype.toString.apply(t));//[object Function] 

有什么区别?

jsbin

回答

3

他们是相同的。从the spec

Function被称为函数,而不是作为一个构造函数,它创建和初始化一个新的函数对象。因此函数调用Function(…)等价于具有相同参数的对象创建表达式新的Function(…)

+0

谢谢你,对不起我自己找不到它(尽管如此) – 2013-03-18 14:38:20

1

两者都是相同的。

但是,如果使用new,则对象内部的每个属性都将有一个新实例。