JavaScript:函数调用vs构造函数

时间:2014-01-10 12:44:11

标签: javascript function oop constructor

在JavaScript中我可以调用对象,例如; StringNumberBoolean以两种不同的方式,一种作为标准函数调用,另一种作为构造函数。

示例

// 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 个答案:

答案 0 :(得分:1)

对于StringBoleanNumber

没有区别,因为内部它们会解析为构造函数调用。它们是用javascript解释器编写的语言定义的(大部分时间是c ++),所以它们与通常的javascript对象/函数/构造函数不同,即使它们的行为与它们相似。