4

Javascript / jQueryアプリケーションを作成しています。

次のように、を表すJSON応答を処理する必要があります。HashMap

  {
    "accounts": {
      "MediaFire": {
       "provider": "MediaFire",
       "usedStorage": "779680",
       "totalStorage": "53687091200"
      },
      "4Sync": {
       "provider": "4Sync",
       "usedStorage": "620692",
       "totalStorage": "16106127360"
      }
    }
  }

オブジェクトで解析された JSON 応答を返す pasing 関数 (これは制御できません) を使用しますresult

次のようにアクセスしようとすると4Sync

var usedStorage = result.accounts.4Sync.usedStorage; //doesn't work

動作しません。最初の4が原因だと思います...他のオブジェクトとの同じ操作は正常に動作します。

var usedStorage = result.accounts.MediaFire.usedStorage; //works

resultオブジェクトに object が含まれていることはわかっていますが、4Syncアクセスできません。以下は、Chrome のコンソールのスクリーンショットです。

Chrome のコンソールのスクリーンショット

これを解決するための回避策はありますか?

4

1 に答える 1

9

角かっこを使用します。

var usedStorage = result.accounts["4Sync"].usedStorage;

プロパティ識別子は数字で始めることができますが、.文字を含むメンバー式は有効な変数識別子のみを許可します (他のものはあいまいであるため)。これを回避するには、角括弧構文を使用できます。これは同等ですが、任意の文字列を使用できます。

興味がある場合は、ここに文法があります:

MemberExpression :
    PrimaryExpression
    FunctionExpression
    MemberExpression [ Expression ]
    MemberExpression . 識別子名

角括弧には任意の式を含めることができますが、.その後にIdentifierName (基本的に、有効な識別子と ES5 の予約語) のみを含めることができることに注意してください。

于 2013-04-18T13:11:05.957 に答える