2012-09-18 37 views
1

所以,我一直在看这篇文章:What is the purpose of Node.js module.exports and how do you use it?并一直在努力使JavaScript对象的范围之内它的意义。对象对象

所以,如果我有这样的game.js

var myObj = function() { 

    this.function1 = function(){ 
     ... 
    }; 
}; 

exports.myObj = myObj; 

在我假设我会做这样的事情的其他文件:

var RequiredObj = require('game.js'); 

var RequiredObj = require('game.js').myObj; 

我迷失方向的是如何使用此对象及其功能,以及如何创建此ob的新实例JECT。

会是这样的吗?

RequiredObj.myObj.function1(); 

RequiredObj.myObj = new RequiredObj.myObj(); 

也没有任何限制,我传递对象有多大?因为在我的实际脚本中,我的游戏对象非常庞大。

回答

2

假设“其他文件”是在同一目录game.js,这样的事情应该工作:

var game = require('./game.js'); 

var mo = new game.myObj(); 

mo.function1(); 

有几件事情需要注意:

  • 模块在项目中应指定with a path - 以./,..//开头。否则,require将仅搜索模块core modulenode_modules folders(例如,通过npm install)。

  • myObj看起来是一个构造函数,function1将是一个实例方法。所以,RequiredObj.myObj.function1()会因为没有创建实例而出错。

  • 另一方面,RequiredObj.myObj = new RequiredObj.myObj()应该工作... 一次。这一行通过引用实例来设置构造函数的引用,从而使构造函数(大部分)无法访问。 (“”,因为它仍然是可以作为RequiredObj.myObj.constructor,但在宣布一个新的变量的情况下一般是简单的。)

也没有任何限制有多大,我的目标传球是?

ECMAScript没有定义对Object大小的任何明确限制。尽管如此,你当然会受到用于执行应用程序的硬件的限制。

+0

谢谢。这是非常彻底的。 –