2012-09-18 38 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

謝謝。這是非常徹底的。 –