2016-04-26 3 views
0

ИТАК У меня есть класс, который содержитПолучить новый объект от другого класса nodejs

объекта JS

var GameServer = require("./GameServer"); 
var gameServer = new GameServer(); 

Gameserver() содержит

Gameserver JS

function GameServer() { 
    // Startup 
    this.run = true; 
    this.lastNodeId = 1; 
    this.lastPlayerId = 1; 
    this.clients = []; 
    this.largestClient; // Required for spectators 
    this.nodes = []; 
    this.nodesVirus = []; // Virus nodes 
    this.nodesEjected = []; // Ejected mass nodes 
    this.nodesPlayer = []; // Nodes controlled by players 
} 

Теперь, что им пытаются для того чтобы достигнуть получают Gameserver от ObjectClass

В моем классе я пытался

нового JS

var ObjectClass = require("./ObjectClass"); 
var gameServer = ObjectClass.gameServer; 

Но с этим путем, я не буду в состоянии захватить класса GameServer(). Я новичок в узле, и мне жаль, что я должен задать этот вопрос. В настоящее время я застрял прямо сейчас

Когда я пытаюсь схватить клиентов от Gameserver

var ObjectClass = require("./ObjectClass"); 
var gameServer = ObjectClass.gameServer; 
gameServer.clients.length; 

Я получаю сообщение об ошибке, клиенты не определено. Во всяком случае это?

Я не могу изменить GameServer или Object js.. В основном, создание сценария для скрипта для дополнительных функций.

+0

Требуется больше кода. Особенно, что такое 'otherclass', и, вероятно, как он создается. – dvlsg

+0

Код Обновлен ... – NodeBeginner

+0

У вас есть классы в экспорте? – rahpuser

ответ

1

Вы пропускаете экспорт файлов, так при выполнении требуется (файл), вы получаете и пустой объект {} ..

Для Gameserver вы должны делать что-то вроде:

'use strict'; 
function GameServer() { 
    // Startup 
    this.run = true; 
    this.lastNodeId = 1; 
    this.lastPlayerId = 1; 
    this.clients = []; 
    this.largestClient; // Required for spectators 
    this.nodes = []; 
    this.nodesVirus = []; // Virus nodes 
    this.nodesEjected = []; // Ejected mass nodes 
    this.nodesPlayer = []; // Nodes controlled by players 
} 

module.exports = exports = GameServer; 

ObjectClass

'use strict'; 
var GameServer = require("./GameServer"); 
var gameServer = new GameServer(); 
exports.gameServer = gameServer; 

вы должны понимать, что требуется кэшировать возвращаемое значение в файл, так что вы будете использовать синглтон из Gameserver.

+0

module.exports = exports = GameServer; ?? – NodeBeginner

+0

Хорошо спасибо .. Получил это :) – NodeBeginner

+0

Я рад, что он работает на вас.Для уточнения я делаю 'module.exports = exports = gameServer' только для того, чтобы гарантировать, что переменная экспорта указывает на тот же объект, что и module.exports, поскольку мы переопределяем ссылку на экспорт, поэтому экспорт указывает на другой объект. В конце вы можете использовать module.exports только забывая об экспорте – rahpuser

Смежные вопросы