2014-01-10 198 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对象/函数/构造函数不同,尽管它们的行为与它们相似。