Javascript 在Node.js中实例化对象的常用方法是什么?

Javascript 在Node.js中实例化对象的常用方法是什么?,javascript,node.js,Javascript,Node.js,以下节点snippiest来自node.js测试,我想知道为什么一种实例化对象的方法比另一种更可取 // 1 var events = require('events'); var emitter = new events.EventEmitter(); emitter.on('test', doSomething); // 2 var net = require('net'); var server = net.createServer(); server.on('connection',

以下节点snippiest来自node.js测试,我想知道为什么一种实例化对象的方法比另一种更可取

// 1
var events = require('events');
var emitter = new events.EventEmitter();
emitter.on('test', doSomething);

// 2
var net = require('net');
var server = net.createServer();
server.on('connection', doSomething);

// 3
var net = require('http');
var server = http.Server(function(req, res) {
  req.on('end', function() { ... });
});
我正在开发一个Node.js模块,试图找到这类API的常用方法。

#1使用JavaScript的
new
关键字来处理创建一个新对象的过程,该对象很可能有一个原型,而#2和#3使用工厂方法来创建一些对象(可能有原型,也可能没有原型)

#1使用JavaScript的
new
关键字来处理创建一个新对象的问题,该对象很可能有原型,而2和3使用工厂方法来创建一些对象(可能有原型,也可能没有原型)

#1和#3是相同的,http.Server可以用作工厂,因为它的第一行:

if (!(this instanceof Server)) return new Server(requestListener);
#2在顶级api函数中很有用,因为它使链接更简单:

require('http').createServer(handler).listen(8080);
而不是

(new require('http').Server(handler)).listen(8080);
核心api模块公开构造函数和factory helper是很常见的,如
Server
createServer
,并允许在没有
new
的情况下使用构造函数。如果1和#3是相同的,http.Server可以用作工厂,因为其中的第一行:

if (!(this instanceof Server)) return new Server(requestListener);
#2在顶级api函数中很有用,因为它使链接更简单:

require('http').createServer(handler).listen(8080);
而不是

(new require('http').Server(handler)).listen(8080);

核心api模块公开构造函数和factory helper是很常见的,比如
Server
createServer
,并允许在没有
new
的情况下使用构造函数,为什么有人会选择一种方式而不是另一种方式?优点是什么?@Andy-我已经用优点和缺点标记了我的评论。为什么有人会喜欢一种方法而不是另一种方法?优点是什么?@Andy-我已经用优点和缺点标记了我的评论。