在Javascript中使用对象

时间:2012-08-10 14:58:18

标签: javascript

我一直在使用codecademy中的Javascript,对其中一个问题有疑问。

问题:

写两个函数:

one creates an object from arguments
the other modifies that object

我的回答:

//First, the object creator
function makeGamePlayer(name,totalScore,gamesPlayed) {
    //should return an object with three keys:
    // name
    // totalScore
    // gamesPlayed
    var myObject = {
     "name": name,
     "totalscore" : totalscore,
     "gamesPlayed" : gamesPlayed
    };
  return myObject;
}

//Now the object modifier
function addGameToPlayer(player,score) {
    //should increment gamesPlayed by one
    //and add score to totalScore
    //of the gamePlayer object passed in as player
    var score = player[totalscore];
    score =score+1;
    player[totalscore] = score;
}

不确定我的错误在哪里。需要一些改进此解决方案的指导..非常感谢...

4 个答案:

答案 0 :(得分:4)

在您的对象中,您永远不会分配分数

"totalscore" : totalscore,

应该是

"totalscore" : totalScore

因为你传递了totalScore

答案 1 :(得分:3)

您无法正确访问该对象

var score = player.totalscore;

var score = player["totalscore"];

它需要一个字符串,但是你传递的是一个未定义的变量。

您还在函数内定义score两次,为内部变量使用不同的名称。

答案 2 :(得分:1)

makeGamePlayer的参数名为totalScore,但您在totalscore中使用myObject这是一个不同的名称 - 案例很重要。

您在addGameToPlayer尝试使用名为totalscore的变量但未定义的变量时也遇到问题

答案 3 :(得分:0)

除了拼写错误和你的代码相当愚蠢和毫无意义的IMO(对不起,但谷歌道格拉斯克罗克福德JavaScript对象或其他东西和什么是powerconstructor),我想你要检查是否所有参数传递给函数。如果是这样的话:

function foo (bar, foobar)
{
    if (arguments.length < 2)
    {
        throw new Error('foo expects 2 arguments, only '+arguments.length+' were specified');
    }
    //or - default values:
    bar = bar || 'defaultBar';
    //check the type?
    if (typeof bar !== 'string' || typeof foobar !== 'number')
    {
        throw new Error ('types don\'t match expected types');
    }
}

依此类推...但是,在提问时请阅读并更具体一些