2016-08-16 67 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