2013-03-18 84 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,則對象內部的每個屬性都將有一個新實例。