2014-01-10 196 views
-1

在JavaScript中,我可以調用對象,例如; String,NumberBoolean有兩種不同的方式,一種是標準函數調用,另一種是構造函數。JavaScript:函數調用vs構造函數

// Call String as a standard function call. 
var a = String("Hello World"); 
// a = "Hello World"; 

// Call String as a constructor function. 
var b = new String("Hello World"); 
// b = String {0: "H", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "W", 7: "o", 8: "r", 9: "l", 10: "d"} 

比方說我現在設計自己的對象; Foo

var Foo = (function() { 
    function Foo(value) { 
     // Construct a foo object 
    } 
    return Foo; 
})(); 

// Test 
var foo = new Foo(); 

好了,我可以叫Foo作爲一個構造函數,但如何實現Foo作爲標準函數調用,就像這樣

var foo = Foo(myValue); 

回答

1

StringBoleanNumber有沒有因爲它們在內部解析爲構造函數調用。它們在javascript解釋器編寫的語言中定義(大部分時間是C++),因此它們與通常的javascript對象/函數/構造函數不同,儘管它們的行爲與它們相似。