Javascript node.js模块将对象传递给singleton

Javascript node.js模块将对象传递给singleton,javascript,node.js,express,Javascript,Node.js,Express,我在node.js中使用了一个类,我希望在需要时将各种对象传递给它 下面是课程: var ItemHandler = (function() { var items = new Array(); return { start: function (item, callback) { items.push(item); ItemHandler.timer(

我在node.js中使用了一个类,我希望在需要时将各种对象传递给它

下面是课程:

    var ItemHandler = (function() {

          var items = new Array();

          return { 
            start: function (item, callback) {

                items.push(item);
                ItemHandler.timer();

            },
            timer: function () {

                var timer = setTimeout(function() {

                    console.log('test');
                    ItemHandler.timer();

                }, 1000);
            }
          };
        })();

module.exports = ItemHandler;
这在我的一个路由中被调用,index.js。像这样:

var itemHandler = require('./lib/item.handler.js');
itemHandler.start(items);
我想做的是将路由中使用的其他对象传递到此文件。与此类似:

var itemHandler = require('./lib/item.handler.js')(socket)(res);
在这里,我将传入socket对象(从socket.io连接和响应返回)

我将如何构造类以接受这两个参数

非常感谢

function ItemHandler(param) {
  var items = new Array();

  ItemHandler.start = function (item, callback) {
    items.push(item);
    ItemHandler.timer();
  };

  ItemHandler.timer = function () {
    var timer = setTimeout(function() {
      console.log('test');
      ItemHandler.timer();
    }, 1000);
  }

  return ItemHandler;
};

module.exports = ItemHandler;
ItemHandler
现在是一个函数,因此

var itemHandler = require('./lib/item.handler.js')(socket)(res);
itemHandler.start(items);
或:


希望它能工作,还没有测试:)

谢谢,还没有测试,但这会消除类的“单例”特性,对吗?虽然,我认为我上面的实现似乎也不是一个真正的单例,它让setTimeout堆积起来,运行的次数越多。是的,我想我的aproach不是一个单例,因为你可以调用
new
并获得一个新对象……但你为什么要这样做:)。然而,它是你的(技术上),但确实计时器会堆积起来。您可以很容易地对此进行调整…只需在它第一次调用timer()时初始化一些bool。ItemHandler类需要这些参数做什么?这可能会对解决方案产生重大影响。
var itemHandler = require('./lib/item.handler.js');
itemHandler(socket)(res).start(items);