2013-01-01 101 views
0

這是關於逐步瀏覽json數組的前一個問題的結果。大衛,回答者給出了一個很好的答案,但我不明白「對象」這個詞在下面的'if'語句中是什麼或者做了什麼。它似乎是一個字符串,但它似乎像某種關鍵字。誰能幫助?許多在此先感謝。在這種情況下,「對象」是什麼意思?

function json2txt(obj) { 
var txt = ''; 
    for (var key in obj) { 
     if (obj.hasOwnProperty(key)) { 
      if ("object" == typeof(obj[key])) { 
      json2txt(obj[key]); 
      } else txt += obj + '\t' + obj[key] + '\r'; 
     } 
    } 
} 
+0

我已經刪除了'json'標籤,並添加'javascript',如這是一個JavaScript問題,而不是JSON問題。 :-) –

+0

請問你可以鏈接上一個問題嗎? – Bergi

回答

3

JavaScript中的typeof operator給你一個字符串,告訴您的操作數是否是一個對象引用,一個數字,一個原始的字符串等,所以該行正在檢查obj[key]是一個對象引用

這裏就是typeof給你(從上面的鏈接),其中操作數的類型是在左邊。

  • Undefined"undefined"
  • Null"object"
  • Boolean"boolean"
  • Number"number"
  • String"string"
  • Object:(天然的和沒有實現[[調用]]): "object"
  • Object:(天然的或主機和確實實現[[調用]]):"function"
  • Object:(主機和不實現[[調用]]):除了實現定義可能不"undefined""boolean""number",或"string"

這可能是值得一個側面說明,儘管typeof經常寫,就好像是一個函數,它是不是功能,括號是不必要的。該行也可以同樣是:

if ("object" == typeof obj[key]) { 

您也可能會發現我的博客文章上確定類型的東西有用:Say what?

+0

T J,非常感謝那真的很明確的答案。我也會檢查你的博客。再次感謝。 – user1940020

+0

@ user1940020:不用擔心,很高興幫助! –

+0

@ user1940020:因爲你在這裏是新手,所以我會提到如果這個*回答了你的問題,那麼SO的工作方式就是通過點擊左邊的複選標記來「接受」答案。更多:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

相關問題