2011-11-18 137 views
0

我有以下結構訪問對象的全局對象的Javascript功能

abc = { 
    dir_content: { 
     dir: [ 
      "hi" 
     ] 
     files: [ 
      "1.txt", 
      "2.txt" 
     ] 
    } 
    directory: "greeting" 
} 

希望我得到的符號正確的一個全局對象ABC。

dir_content通過abc.dir_content = data;

有從JSON對象傳遞的值我有一個函數如下

function show_dir() { 
    console.log(abc.dir_content.dir); 
    console.log(abc.directory); 
} 

我期待console.log(abc.dir_content.dir)展現喜。但它的說法是未定義的。 console.log(abc.directory)顯示問候很好。

添加:我可以在控制檯上用console.log(abc.dir_content.dir)打印正確的結果。但它在函數中調用時表示未定義。

我需要遍歷函數中的目錄和文件的數組。但現在我堅持讓js讀取函數中的值。

編輯:我發現一些錯誤,這是我的全局對象聲明。小提琴鏈接http://jsfiddle.net/xh5YH/。匿名函數聲明有什麼問題?

+1

你的符號實際上沒有多大意義。 'dir'應該是一個數組嗎? – pimvdb

+0

這顯然意味着沒有設置abc.dir_content的值。嘗試記錄abc.dir_content以查看JSON對象的值是否設置爲 – pradeek

+0

好的。我在符號上表現不好。無論如何,abc是一個全局對象。 dir_content是abc的一個屬性,帶有一個JSON對象,數組即dir和文件。 加入...我可以在控制檯中讀取沒有問題的全局對象。然而,該函數中傳遞的相同命令返回錯誤。 – resting

回答

0
dir_content: { 
    dir: { 
     key: "hi" 
    }, 
    files: { 
     key1: "1.txt", 
     key2: "2.txt" 
    } 
} 

通知[](){}

[]之間的差異意味着要創建一個數組,但需要一個對象,因此{}括號。 另外,返回的dir_content結構不正確。一個對象總是這樣構造的:

{ key: 'content' } 

這就是爲什麼我在返回的數據中添加了key,key1和key 2的原因。如果你設法正確地構造數據,一切都會起作用。

+0

爲什麼downvote?要訪問返回的數據的內容,它需要像我發佈的代碼那樣結構化。 –

+0

目錄和文件是數組。好吧..我加入鑰匙。 – resting

+0

如果它們是數組,則不必添加密鑰。在我看到您對陣列的評論之前,我剛剛發佈了代碼;) –

1
abc = { 
    dir_content: { 
     // array of one dir 
     dir: [ "hi" ], 
     // array of two files 
     files: [ 
      "1.txt", 
      "2.txt" 
     ] 
    }, 
    directory: "greeting" 
} 
+0

感謝您對我的支持...... :) – resting

+0

不客氣,放聲說謝謝,接受答案:) – Triptych

+0

upvoted,但這並不能真正回答我的問題。在我原來的帖子的底部放了一個小提琴鏈接。我不知道爲什麼匿名函數聲明全局對象不起作用。 – resting