2014-02-19 3 views
0

Я писал несколько модулей в режиме BDD, и я выбрал этот тип шаблона. Проблема в том, что метод в моем модуле установки Deck должен создавать экземпляры и вызывать методы из export.Deck. Как мне это сделать?Совместное использование модулей node.js/common.js

exports.Deck_Setup = function() { 
    var ShuffledDeck=[]; 

    var card_dummy= [ 
     { 
      Rank:"Queen", 
      Suit: "Hearts" 
     }, 
     { 
      Rank:"King", 
      Suit: "Hearts" 
     }, 
     { 
      Rank:"Ace", 
      Suit: "Spades" 
     } 
    ]; 

    var constructor = function() {}; 
     constructor.prototype.generateDECK = function(Card, DeckBuilder){ 
      var randomNumber = Math.floor(Math.random() * 3); 
      console.log(Card, DeckBuilder); 
      test = new Card(); 
      // var new1 = Card.add(card_dummy[0]);   
      // card = new Card(card_dummy[randomNumber]); 

     }; 
      // return (Cards.indexOf(Card) > -1) ? true : false; 

    return new constructor(); 

}; 

exports.Deck = function() { 
    var Cards=[]; 

    var constructor = function() {}; 
     constructor.prototype.add = function(Card){ 
      if (this.size() >= 52){ 
       return false; //can't add anymore cards 
      } 
      else { 
       Cards.push(Card); 
       return true; 
      } 
     }; 

     constructor.prototype.remove = function(){ 
      if (this.size() > 0){ 
       Cards.pop(); 
       return true    
      } 
      return false; 
     }; 

     constructor.prototype.size = function() { 
      return Cards.length; 
     }; 

     //magic method for our cards 
     constructor.prototype.includes = function(Card) { 
      for (var each in Cards){ 
       if (JSON.stringify(Cards[each]) === JSON.stringify(Card)){ 
        return true; 
       } 
      } 
      return false; 
     }; 
      // return (Cards.indexOf(Card) > -1) ? true : false; 

    return new constructor(); 

}; 

ответ

1

Если Deck_Setup необходимо получить доступ открытых методов из колоды, используйте require:

var deck = require('./Deck') 

где переменная deck будет результат вашей new constructor

Вы также может достичь этого, установив как заводскую, так и заводскую палубу в том же модуле (вы можете экспортировать объект:

var Deck = {} 
var Deck_Setup = {} 
module.exports = { 
    Deck : Deck, 
    Deck_Setup : Deck_Setup 
}; 

Может быть, вы должны прочитать этот блог и найти свой собственный путь: http://bites.goodeggs.com/posts/export-this/

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