导出对象中的对象
所以我一直在看这个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
大小的任何明确限制。 虽然,你当然会受到用来执行应用程序的硬件的限制。