最近我一直在观看node.js的视频教程。而在“对象工厂”方面。
var foo = require("./module");
他创造了一个“新对象”来做这个
var myObject = foo();
现在他可以使用foo模块中的所有方法。 为什么他不使用“新”字?
var myObject = new foo();
答案 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关键字,则表示在需要时会返回新对象。