2

我应该如何初始化Function constructor函数:

(两者似乎都有效。)

像这样 :

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

4

2 回答 2

3

它们是相同的。从规格

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

于 2013-03-18T14:37:53.987 回答
1

两者都是一样的。

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

于 2013-03-18T14:38:44.473 回答