0

私はcodecademyでJavascriptに取り組んでいますが、質問の1つに疑問があります。

質問:

2つの関数を記述します。

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

4 に答える 4

4

オブジェクトでは、スコアを割り当てることはありません

"totalscore" : totalscore,

する必要があります

"totalscore" : totalScore

あなたが通過しているのでtotalScore

于 2012-08-10T15:01:30.473 に答える
3

オブジェクトに正しくアクセスしていません

var score = player.totalscore;

また

var score = player["totalscore"];

文字列が必要ですが、未定義の変数を渡しています。

scoreまた、関数内で2回定義しています。内部変数には別の名前を使用してください。

于 2012-08-10T15:03:03.643 に答える
1

パラメータ to にmakeGamePlayerは名前totalScoreが付いていますが、使用しているtotalscorein myObjectwhich は別の名前です - 大文字と小文字が重要です。

また、名前が付けられているが定義されていないaddGameToPlayer変数を使用しようとすると問題が発生しますtotalscore

于 2012-08-10T15:03:14.823 に答える
0

タイプミスとあなたのコードがかなりばかげていて無意味な IMO であることは別として (申し訳ありませんが、Google Douglas Crockford JavaScript Object か何かを読んで、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');
    }
}

など...しかし、質問をするときは、読んでより具体的にしてください

于 2012-08-10T15:13:57.343 に答える