我有一个具有以下结构的脚本:
Test = {
CONSTANTS : {},
VARIABLES : {},
MARKUP : {},
FUNCTIONS : {
init : function () {
// Access variable from different namespace
var all_constants = DifferentNamespace.CONSTANTS; // WORKS
var tester = DifferentNamespace.CONSTANTS.chunk_of_markup; // SAYS UNDEFINED
}
},
init : function () {
// Call real init() function
$(document).ready(function () {
Test.FUNCTIONS.init();
});
}
};
$(document).ready(function () {
Test.init();
});
如果我删除任何一个$(document).ready(..)
函数调用,当我尝试从不同的命名空间访问一个常量时,它是未定义的;两者都很好用。
如您所见,我使用了两个init()
函数,一个只是为了整理对 init 的调用,因为我将函数包装在一个附加对象中。
如果我删除与 CONSTANTS、VARIABLES 等处于同一级别的函数并尝试init()
在 Test.FUNCTIONS 中调用它仍然不起作用。
编辑:
如果console.log(all_constants)
我得到完整的对象(使用 .chunk_of_markup),但如果我console.log(tester)
得到undefined
. 如果我包装测试仪,我会得到[]
我还应该注意,另一个命名空间从单独的文件中获取标记。
任何想法为什么?