所以我一直在看这篇文章: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;
我迷路的地方是如何使用这个对象及其功能,以及如何创建这个对象的新实例。
会是这样的吗?
RequiredObj.myObj.function1();
和
RequiredObj.myObj = new RequiredObj.myObj();
我传递的物体有多大也有限制吗?因为在我的实际脚本中,我的游戏对象是巨大的。
答案 0 :(得分:2)
假设“其他文件”与game.js
位于同一目录中,则此类内容应该有效:
var game = require('./game.js');
var mo = new game.myObj();
mo.function1();
有几点需要注意:
项目中的模块应指定为with a path - 以./
,../
或/
为首。否则,require
将仅在core module或node_modules
folders中搜索模块(例如,通过npm install)。
myObj
似乎是构造函数,function1
将是一个实例方法。因此,RequiredObj.myObj.function1()
会因为没有创建实例而出错。
另一方面,RequiredObj.myObj = new RequiredObj.myObj()
应该有效... 一次。此行设置了对构造函数的引用,并引用了一个实例,使构造函数(大部分)无法访问。 (“ Mostly ”因为它仍然可以作为RequiredObj.myObj.constructor
使用,但为实例声明一个新变量通常更简单。)
我传递的物体有多大也有限制吗?
ECMAScript没有对Object
的大小定义任何明确的限制。但是,您当然会受到用于执行应用程序的硬件的限制。