2017-07-19 95 views
0

我已經遍尋全面搜索這個非常簡單的問題的可理解的答案,而且似乎無法找到答案。作爲主要的Java程序員,這是一個非常令人沮喪的過程。如何從另一個文件創建另一個類的實例

例如,假設我正在編程一副牌。我會做到這一點的方法是在card.js一「卡」類,這將是這個樣子:

function Card(value, suit){ 
    this.value = value; 
    this.suit = suit; 

} 

,然後一個「甲板」類deck.js這將是這個樣子:

function Deck(){ 
    this.cardArray = []; 
    this.topCard = new Card(2, 'clubs'); 
} 

Deck.prototype.shuffle = function(){ 
    //shuffle the deck 
} 

這裏的問題是,我得到一個錯誤,說'意外的標識符'。大概是因爲js沒有意識到我已經定義了Card類。我怎樣才能讓deck.js文件可以訪問Card類?

我應該提到,我正在試圖在沒有瀏覽器的情況下這樣做,所以我想我會使用node.js(再次,抱歉,我對這個環境很陌生)。或者更好地說,這將是服務器端。

+1

如果使用Node.js的,那麼你可能要考慮的模塊系統:https://nodejs.org/api/modules.html – UnholySheep

+1

FWIW,'Deck.prototype.shuffle = function(){}'不應該在構造函數中。 –

+0

「意外標識符」是*語法錯誤*。您發佈的代碼不會拋出該錯誤,所以您似乎已經省略了包含該錯誤的部分。要清楚:如果你沒有將'Card'導入到'Deck'定義的任何地方,那麼你仍然會得到一個錯誤,但那將是一個不同的錯誤。 –

回答

1

您需要使用出口和進口:

在卡的文件,你會怎麼做:

function Card(num, suit) { 
    this.num = num; 
    this.suit = suit 
} 

module.exports = Card; 

然後在甲板上的文件,你會怎麼做:

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

function Deck() { 
    this.cardArray = []; 
    this.topCard = new Card(2, 'clubs'); 
} 

Deck.prototype.shuffle = function() { 
    //shuffle the deck 
}; 
+0

它給我一個錯誤,說「未捕獲的ReferenceError:模塊未定義」。我必須首先在什麼地方定義它? –

+0

@TravisPavletich你使用節點來運行它嗎?類似於'$ node Deck.js' – KevBot

+0

是的。我發現我剛剛提到的問題並修復了它。但它仍然給我一個錯誤。它在線上說this.topCard =新卡(2,'俱樂部');語法錯誤:意外的標識符。 –

1

您可以使用模塊系統

在您的card.js中:

const Card = function(value, suit){ 
this.value = value; 
this.suit = suit; 
} 
module.exports = Card; 

而在你deck.js

const Card = require('./card'); 

function Deck(){ 
this.cardArray = []; 
this.topCard = new Card(2, 'clubs'); 

} 

Deck.prototype.shuffle = function(){ 
    //shuffle the deck 
} 
+0

您不應該使用該箭頭功能。 「this」沒有引用該實例。 – lleon

+0

是的,我忘了,但我現在編輯 –

相關問題