亲爱的,我刚刚开始在javascript中学习模块。这是我对模块的实现:
module.exports = function(logger_level) {
this.info = function(message) {
stdout(message);
};
};
function stdout(message)
{
process.stdout.write(message+'\n');
}
我必须像这样调用它:
var logger = require('./js/logger.js');
var logger1 = new logger("info1");
logger1.info("info");
我的问题是如何更改模块的实现,以便我可以像这样调用它:
var logger = require('./js/logger.js')("info");
logger.info("info");
答案 0 :(得分:2)
如果你想这样使用它,根本不需要构造函数:
module.exports = {
info: function(message) {
stdout(message);
}
};
function stdout(message)
{
process.stdout.write(message+'\n');
}
我刚开始用javascript学习模块。
请注意,这不是JavaScript"中的模块。这就是NodeJS"中的模块。 JavaScript的模块,直到ES2015(" ES6")才被引入,看起来和行为完全不同,但它们还没有被广泛支持。如果是,您的模块可能如下所示:
// ES2015+ syntax
export default {
info: function(message) {
stdout(message);
}
};
function stdout(message)
{
process.stdout.write(message+'\n');
}
......并像这样使用:
import logger from './logger.js';
logger.info("info");
答案 1 :(得分:1)
您可以使用对象包装构造函数并返回构造函数的实例
module.exports = {
return new function(logger_level) {
this.info = function(message) {
stdout(message);
};
};
}
并称之为
var logger = require('./js/logger.js');
logger.info("info");
您还可以使单例模式与构造函数的单个实例一起使用
答案 2 :(得分:1)
您正在寻找factory function。将它应用于您的用例,它看起来像:
SELECT f.day, f.fedex, f.usps, f.ups
FROM table2 f
INNER JOIN table1 z ON z.idzipform = f.idnextday
WHERE z.fromzip = '64083' AND z.tozip = '94568'
UNION
SELECT s.day, s.fedex, s.usps, s.ups
FROM table3 s
INNER JOIN table1 z ON z.idzipform = s.idscndday
WHERE z.fromzip = '64083' AND z.tozip = '94568'
UNION
SELECT t.day, t.fedex, t.usps, t.ups
FROM table4 t
INNER JOIN table1 z ON z.idzipform = t.idthirdday
WHERE z.fromzip = '64083' AND z.tozip = '94568'