导出对象中的对象

所以我一直在看这个post: Node.js module.exports的目的是什么?你如何使用它? 并一直试图在JavaScript对象的范围内理解它。

所以如果我在game.js有这个:

 var myObj = function() { this.function1 = function(){ ... }; }; exports.myObj = myObj; 

在另一个文件中,我假设我会做这样的事情:

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

要么

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

我迷失方向的是如何使用这个对象及其function,以及如何创build这个对象的新实例。

会是这样的吗?

 RequiredObj.myObj.function1(); 

 RequiredObj.myObj = new RequiredObj.myObj(); 

对于我传递的对象有多大也有没有限制? 因为在我的实际脚本中,我的游戏对象是巨大的。

假设“ 其他文件 ”与game.js在同一个目录中,像这样的东西应该工作:

 var game = require('./game.js'); var mo = new game.myObj(); mo.function1(); 

有几件事要注意:

  • 您的项目中的模块应使用以.// ./ 的path指定。 否则, require只会search模块作为核心模块或在node_modules文件夹中 (例如,通过npm install )。

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

  • 另一方面, RequiredObj.myObj = new RequiredObj.myObj()应该工作… 一次 。 这一行通过引用实例来设置构造函数的引用,使构造函数(大部分)不可访问。 (“ Mostly ”,因为它仍然可以作为RequiredObj.myObj.constructor ,但是为实例声明一个新variables通常更简单。)

对于我传递的对象有多大也有没有限制?

ECMAScript没有定义Object大小的任何明确限制。 虽然,你当然会受到用来执行应用程序的硬件的限制。