2016-08-16 62 views
0

我有一個函數在JavaScript像這樣:用JavaScript處理對象

function player(){ 
    var cards=[]; 
    this.score=0; 
    var self=this; 

    this.addCard=addCard; 
    this.resetCards=resetCards; 


    function addCard(card){ 

     cards.push(card); 
     this.score=+card.value; 
    } 

    function resetCards(){ 
     cards=[]; 
     score=0; 
    } 


} 

我用戶一個構造函數調用的函數:

var player1=new player(); 

然後我打電話一些它的封閉功能,這樣

player1.addCard(someCardObject);//card someCardObject has .value say 5 
player1.addCard(someCardObject);//card someCardObject has .value say 7 

我期望player1.score是5 + 7 = 12,但是它保持7。

誰能告訴我什麼,我做錯了

+2

你永遠不會向'.score'添加任何東西。 – Teemu

+0

不打電話addCard加分,如果不是,有沒有辦法讓分數靜態 – Snedden27

+1

不,它不。 'this.score = + card.value;'將'card.value'分配給一個數字 - 賦予'this.score'。你的意思是'this.score + = card.value;'? – Xufox

回答

4

你在addCard有一個簡單的錯誤。

this.score=+card.value; 

應該

this.score += card.value; 

在第一種情況下,你設置this.score等於card.value,而在第二個,您要添加card.value它。記住孩子們,經營者的順序事項!

+0

這甚至不是訂單或操作的問題。這只是一個錯字。 – Xufox

+0

公平點。更改爲「運營商訂單」,這是正確的。我只想說一句精闢的話:P –

+0

_「你正在用card.value遞增它」_...這是錯誤的... [___「記住孩子?」___] – Rayon