2009-07-21 125 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范围!