2012-09-27 53 views
0

我是JavaScript和哎呀新手。我有一個JavaScript函數javascript函數調用與新的性能

function foo(args){ 

    ... 
} 


//mehtod1 
var type1=foo(a); 

//mehtod2 
var type2= new foo(a); 

現在我的疑問是,這將給予我們更多的性能mehtod1或方法2

什麼是新的關鍵詞的意義,什麼是過mehtod1優勢?

(如果這個問題已經存在,對不起我的英文不好)

回答

5

第一次調用執行一項操作:功能評價。第二個執行兩個操作:創建一個新對象,然後進行功能評估。不要使用new來評估函數。

下面是一個例子:

var x = function() { return true; }; 

var y = x(); // Type of y is boolean 
var y = new x; // Type of y is object 
var y = new x(); // Type of y is object 
var y = x; // Type of y is a function 
var y = x.call(this); // Type of y is a boolean 
+0

@icktoofay謝謝你糾正我,你是絕對正確的。我會在一秒鐘內編輯 –

1

他們是不同的。

type1將是函數foo的返回值。

type2將是一個對象,其構造函數的功能是foo

操作者創建用戶定義的對象類型的實例或具有構造函數內置對象類型中的一個的 。

Reference.