2012-07-27 64 views
-1

我有開始像這樣一類:無法訪問公共的JavaScript對象變種

function event() 
{ 
    this.event_id = null; 

,然後這一切又與初始化函數填充。

在我的腳本的另一部分,我無法訪問這些變量。

如果我運行此代碼:

console.log(my_event); 
    console.log(my_event.event_id); 

對於第一行控制檯給我用填充事項標識事件對象的一個​​不錯的表現,但對於二線它給了我零。

發生了什麼事?變量應該是公共權利?

非常感謝您的幫助。

+1

您將其設置爲空,您期望什麼? – Prinzhorn 2012-07-27 10:54:16

+2

我認爲你需要展示更多的代碼。最好是你認爲應該工作的完整測試用例。最好在jsfiddle上重複。 – Quentin 2012-07-27 10:54:55

+0

沒有公共和私人的區別,任何對象屬性都是公開的。 'null'是預期的值,因爲你已經設置了它。 – Esailija 2012-07-27 10:56:32

回答

2

如果您的console.log是非標量值(例如對象),則只有在展開以查看chrome開發人員工具控制檯中的對象屬性時,纔會檢索其實際狀態。短的數組或類似<的數組將會自動展開,儘管狀態通常是這樣(我的測試結果不一樣,也許我只是看到了一些東西),但在這種情況下也不會立即檢索到。

所以,如果你console.log(my_event.event_id);得到null,那麼它實際上null那個console.log執行的時間。 console.log(my_event);的結果取決於何時在控制檯中展開記錄的對象。如果您發出修改event_id屬性的ajax請求,並且在您在控制檯中展開對象時請求已完成,它將顯示已更改的值。

另外,javascript中的每個對象屬性都是「public」。