2016-08-03 13 views
0

は考える:なぜこのオブジェクトのキーは文字列ですか?

request = .ajax({ 
    method: 'POST', 
    data : JSON.stringify(object), 
    url : 'offline_ajax_queue.php', 
    contentType : 'application/json', 
    dataType : 'json', 
    cache : false, 
    success : function(response) { 
     console.log(response); 
     for (var key in response) { 
      if (response.hasOwnProperty(key)) { 
       console.log(key, response[key]); 
       if(response[key] > -1) 
        removeAction(key); 
      } 
     } 
    } 
}); 

とコンソールで、応答=

{1: 1, 2: 0, 3: 0, 4: 0} 

と:

typeof response[key] // "number" 

をなぜだけでなく、キーstringないnumberですか?

typeof key // "string" 
+2

常にそうです。オブジェクトプロパティは、定義によって文字列です。 –

+1

オブジェクトキーは文字列です。配列インデックスの場合でも – undefined

答えて

5

オブジェクトのプロパティ名常に文字列や記号、決して数字です。

Mapには、異なるデータタイプのキーを設定できます)。

+0

はい、それは別のものですが、関連する質問です:なぜ彼らは出力の中で '数字 'のように見えますか? – David

+1

@Davidコンソールは人にやさしい出力を表示しようとします。 – undefined

+1

@David、あなたはコンソール出力を意味しますか?これはブラウザのフォーマット出力です。 'JSON.stringify({1:1})'は '{" 1 ":1}'になります。これをJSONに変換すると、 –

関連する問題