Javascript 在Node.js中实例化对象的常用方法是什么?
以下节点snippiest来自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',
// 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-我已经用优点和缺点标记了我的评论。