2009-07-21 124 views
0

我有一堆構成我正在構建的Web應用程序的繼承層次結構的JavaScript「類」(原型)。我一直在想這些類組織到「命名空間」:Javascript範圍問題

var UI = { 
Control: Class.create(KVO.Object, 
{ 
... 
}) 
} 

的類被組織成單獨的文件,所以當我想一個類添加到UI,我在一個單獨的文件這樣做:

UI.TextFieldControl = Class.create(UI.Control, 
{ 
... 
}) 

但是,當我嘗試在包含文件後在程序中使用UI.TextFieldControl時,它是未定義的。我猜這是某種範圍的問題,因爲它在TextFieldControl文件中被定義,但據我所知,UI.TextFieldControl應該在包含之後被定義;我究竟做錯了什麼?

+0

如果您直接嘗試使用UI.Control會發生什麼?同樣的問題? – hobodave 2009-07-21 22:15:15

+0

另外,是否可以提供鏈接到演示網站?謝謝。 – hobodave 2009-07-21 22:16:37

+0

是否說「UI未定義」或「UI.TextFieldControl未定義」? – 2009-07-21 22:19:29

回答

0

您是否嘗試過使用FireBug?因爲你提供的代碼看起來沒有錯。如果你的文件包括很好。應該定義你的控件。

  1. 使用FireBug並檢查您的文件及其加載順序。在定義TextFieldControl之後,也許您的UI.Control正在加載?你也可以看到你的用戶界面命名空間,如果它擁有所有需要的類,並嘗試手動定義它們並看看會發生什麼。

  2. 如果你使用IE瀏覽器,你可能忘了刪除一些後面的逗號,簡單地丟棄整個文件與TextFieldControl ...

1

好吧,我發現這個問題;我包含了兩次定義UI的文件,一次在定義UI.TextFieldControl的文件之前,一次。感謝您的回覆;我開始擔心我根本不理解JavaScript範圍!