不,如果沒有new
關鍵字,請致電Function
確實沒有任何危害。事實上,我建議儘可能在您的程序中使用new
:stop using the new
keyword。
這將是最好創建一個new
函數:
Function.prototype.new = function() {
Factory.prototype = this.prototype;
return new Factory(this, arguments);
};
function Factory(constructor, args) {
return constructor.apply(this, args);
}
,現在你可以創建如下情況下它這樣做的好處是:
function Foo(a, b) {
this.a = a;
this.b = b;
}
var foo = Foo.new(1, 2);
// instead of
var foo = new Foo(1, 2);
有什麼意義?問題的關鍵是,你現在可以做的事情一樣:
var foo = Foo.new.apply(Foo, [1, 2]);
因爲new
是一個功能,你可以做一些事情來它喜歡它應用到一個數組參數,等等。你不能做的同樣的事情new
關鍵字。
無論如何,回到主題Function
構造函數可以帶或不帶new
關鍵字調用。它沒有任何區別。因此,我建議你不要使用關鍵字new
。它不僅爲您節省幾個按鍵也可以用於諸如:
Function.apply(null, ["a", "b", "return a + b"]);
,這是特別有用的,如果你不知道你要多少參數的函數事先有。
希望有所幫助。
@ Qantas94Heavy它不是重複的,因爲在鏈接問題中沒有任何地方提到了'Function'構造函數。 – 2014-11-23 05:00:44
@ Qantas94Heavy不,我沒有保持這個問題的既得利益。我可以立即解決這個問題。但是,我確實認爲這是一個真正的新問題,因爲它解決了相關問題沒有解決的問題。對於在StackOverflow上尋找答案的人而言,沒有什麼比煩惱不得不遵循重複的鏈接,然後發現他們必須爲自己推斷答案。重複只要是新的就可以了:http://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying-and-love-duplication/ – 2014-11-23 05:16:34