在节点JS中使用传统的javascript对象

时间:2014-09-03 13:42:22

标签: javascript node.js object

我正在努力做一个NODE JS项目,并学习Node JS结构的内部和外部。我已经浏览了整个互联网,以了解如何做到这一点很少或没有运气。问题如下:

我有一个名为player的类,它是在名为player.js

的文件中创建的
var playa = function ()
 {

       this.createPlayer = function(){

       }

 }

在我的index.js文件中,我链接了我的播放器

      var playa = require("./player.js");

然而,当我尝试引用我的播放器时

  io.on('connection', function(socket){
       var player =   new playa();
        player.createPlayer();
});

控制台告诉我,playa不是一个功能,服务器会停止。

  1. 我是否允许在节点中使用传统的OOP JS?如果我把这个类移到index.js文件中它会很好地工作,但是因为类很大而且我打算使用至少5个类,所以它会变得草率。
  2. 2.如果有可能以这种方式构建我的对象,我该如何链接它们/正确引用它们?

    1. 如果既不是也不可能,那么构建我的对象的正确方法是什么?我希望不要放弃我目前的惯例,因为这是我习惯的,我需要创建多个播放器实例。

2 个答案:

答案 0 :(得分:4)

如果您将构造函数导出为module.exports属性,那么您必须将其作为require()返回的值的属性引用它:

var playa = require("./player.js");
var player = new playa.playa();

如果希望require()返回函数本身,可以编写

module.exports = function()
{
   this.createPlayer = function(){

   }
}

答案 1 :(得分:3)

将其添加到player.js文件的底部

module.exports.playa = playa;

这将允许“课程”可用

修改

您需要创建如下所示的实例:

var p = require('./player.js')
var player = new p.playa();