我有以下結構的腳本:
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等級相同的函數並嘗試在Test.FUNCTIONS中調用init()
,它仍然不起作用。
編輯:
如果我我console.log(all_constants)
得到充分的對象(.chunk_of_markup),但如果我console.log(tester)
是得到undefined
。如果我打包測試儀我得到[]
我還應該注意到,其他命名空間從單獨的文件獲取標記。
任何想法爲什麼?
你得到了什麼錯誤? – Nelson
請參閱編輯調試 – Alex
爲什麼在對象方法中使用ready函數?它已經在init()實例化之前等待ready事件。 –