NodeJS使用module.exports进行原型设计

时间:2014-11-11 01:52:05

标签: javascript node.js class

我在我的NodeJS应用程序中创建了一个类,并使用module.exportsrequire()语句将其带入我的主服务器脚本:

// ./classes/clientCollection.js
module.exports = function ClientCollection() {
    this.clients = [];
}

// ./server.js
var ClientCollection = require('./classes/clientCollection.js');
var clientCollection = new ClientCollection();

现在我想将函数添加到我的类中:

ClientCollection.prototype.addClient = function() {
    console.log("test");
}

然而,当我这样做时,我收到以下错误:

ReferenceError: ClientCollection is not defined

如何在NodeJS应用程序中使用原型设置向类中正确添加函数?

2 个答案:

答案 0 :(得分:3)

我认为你需要。

function ClientCollection (test) {
   this.test = test;

}

ClientCollection.prototype.addClient = function() {
    console.log(this.test);
}

module.exports = ClientCollection;

function ClientCollection () {

}

ClientCollection.prototype = {
      addClient : function(){
          console.log("test");
      }
}

module.exports = ClientCollection;

答案 1 :(得分:1)

由于种种原因,这个结构:

module.exports = function ClientCollection() {
    this.clients = [];
}

没有在函数本身之外定义符号ClientCollection,所以你不能在模块的其他地方引用它来添加到原型中。因此,您需要在外部定义它,然后将其分配给导出:

function ClientCollection() {
    this.clients = [];
}

ClientCollection.prototype.addClient = function() {
    // code here
}

module.exports = ClientCollection;