2016-08-16 5 views
0

Ich habe eine Funktion in Javascript als so:mit JavaScript-Objekte

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; 
    } 


} 

I Benutzer einen Konstruktor die Funktion aufzurufen:

var player1=new player(); 

Dann rufe ich einige seiner geschlossenen Funktionen wie diese

Ich erwarte player1.score zu 5 + 7 = 12, aber es bleibt 7.

Kann mir jemand sagen, was ich falsch hier

+2

Sie fügen nichts zu '.score' hinzu. – Teemu

+0

ruft nicht addCard hinzu, um zu zählen, wenn nicht, gibt es eine Möglichkeit, um statische Punkte zu machen – Snedden27

+1

Nein, tut es nicht. 'this.score = + card.value;' weist 'card.value' - umgewandelt in eine Zahl - zu' this.score' zu. Meintest du 'this.score + = card.value;'? – Xufox

Antwort

4

Sie haben in addCard einen einfachen Fehler mache.

this.score=+card.value; 

Sollte

this.score += card.value; 

Im ersten Fall sein, sind Sie this.score gleich card.value, während in der zweiten Einstellung, sind Sie card.value ihm hinzufügen. Denken Sie daran, Kinder, Reihenfolge der Betreiber Angelegenheiten!

+0

Das ist nicht einmal ein Problem der Bestellung oder Operationen. Es ist nur ein Tippfehler. – Xufox

+0

Messepunkt. In "Reihenfolge der Operatoren" geändert, was korrekt ist. Ich wollte nur etwas Wichtiges sagen: P –

+0

_ "du erhöhst es mit card.value" _... Das ist falsch ... [___ "Erinnerst du dich an Kinder?" ___] – Rayon