1

所以我一直在看这篇文章: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;

我迷失的是如何使用该对象及其功能,以及如何创建该对象的新实例。

会是这样吗?

RequiredObj.myObj.function1();

RequiredObj.myObj = new RequiredObj.myObj();

我通过的物体有多大也有限制吗?因为在我的实际脚本中,我的游戏对象很大。

4

1 回答 1

2

假设“其他文件”与 位于同一目录中game.js,这样的事情应该可以工作:

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

var mo = new game.myObj();

mo.function1();

需要注意的几点:

  • 项目中的模块应使用路径指定- 以./..//. 否则,require只会在核心模块node_modules文件夹中搜索模块(例如,通过npm install)。

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

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

我通过的物体有多大也有限制吗?

ECMAScript 没有对Object. 不过,您当然会受到用于执行应用程序的硬件的限制。

于 2012-09-18T20:28:05.443 回答