Javascript范围问题

时间:2009-07-21 22:12:10

标签: javascript

我有一堆javascript“类”(Prototype)构成了我正在构建的Web应用程序的继承层次结构。我一直在尝试将这些类组织成“命名空间”:

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

这些类被组织成单独的文件,所以当我想在UI中添加一个类时,我在一个单独的文件中这样做了:

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

但是,当我在包含文件后尝试在我的程序中使用UI.TextFieldControl时,它是未定义的。我想这是某种范围的问题,因为在TextFieldControl文件中它是定义的,但据我所知,UI.TextFieldControl应该在它被包含后定义;我做错了什么?

2 个答案:

答案 0 :(得分:1)

好的,我发现了问题;我包含了定义UI两次的文件,一次是在定义UI.TextFieldControl的文件之前,一次是在之后。谢谢你的回复;我开始担心我根本不理解javascript范围!

答案 1 :(得分:0)

您是否尝试过使用FireBug?因为你提供的代码似乎没有错。如果您的文件包含正常。应该定义您的控件。

  1. 使用FireBug并检查您的文件及其加载顺序。在定义UI.Control后,您的TextFieldControl是否正在加载?如果你拥有所有必要的类,你也可以看到你的UI名称空间,并尝试手动定义它们,看看会发生什么。

  2. 如果你正在使用IE,你可能忘了删除一些尾随的逗号,只是用你的TextFieldControl放弃整个文件...