2009-07-21 9 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

+0

また、デモサイトへのリンクを提供することは可能でしょうか?ありがとう。 – hobodave

+0

「UIが定義されていません」、または「UI.TextFieldControlが定義されていません」と表示されますか? –

答えて

0

FireBugを使用しようとしましたか?あなたが提供したコードでは何も間違っているように見えません。あなたのファイルが含まれている場合は問題ありません。コントロールを定義する必要があります。

  1. FireBugを使用して、ファイルとその読み込み順序を確認してください。 TextFieldControlを定義した後にUI.Controlがロードされている可能性がありますか?また、必要なすべてのクラスを嫌うなら、あなたのUI名前空間を見ることができます。また、それらを手で定義して何が起こるか見ることもできます。あなたはIEを使用している場合

  2. あなたはおそらく、単にあなたのTextFieldControl ...

1

[OK]をクリックしてファイル全体を破棄することを、いくつかの末尾のカンマを削除するのを忘れ、私は問題を発見しました。 UIを2回定義するファイルをインクルードしていました.1回はUI.TextFieldControlを定義するファイルの前に、もう一度は1回です。あなたの応答に感謝します。私はJavaScriptのスコープを全く理解していないと心配し始めました!