在Node.Js上创建“新”对象

时间:2015-06-17 20:58:36

标签: javascript node.js

最近我一直在观看node.js的视频教程。而在“对象工厂”方面。

var foo = require("./module");

他创造了一个“新对象”来做这个

var myObject = foo();

现在他可以使用foo模块中的所有方法。 为什么他不使用“新”字?

var myObject = new foo();

2 个答案:

答案 0 :(得分:0)

以此为例:

function SomeClass() {}
SomeClass.prototype = {
    sayHi: function() {
        console.log('hello');
    }
};

function foo() {
    return new SomeClass();
}

foo() // => returns a new SomeClass object

在这种情况下,foo就是他们所说的“工厂”功能,因为它有点像一种工厂创造对象(就像在现实生活中工厂创造新的一样)对象;汽车工厂等)

这对单身人士也有好处:

(function() {
    var singleton;

    function SomeClass() {}
    SomeClass.prototype = {
        sayHi: function() {
            console.log('hello');
        }
    };

    function foo() {
        singleton = singleton || new SomeClass();
        return singleton;
    }

    window.foo = foo;
}());

foo(); // returns a new SomeClass
foo(); // returns the same SomeClass instance (not a new one). This is a singleton.

Node.js只是常规JavaScript,所以在您给出的示例中,您所做的只是从模块中包含工厂并使用它来创建新对象(“类”的实例)。

答案 1 :(得分:0)

如果不使用new关键字,则表示在需要时会返回新对象。