var Test = (function() {
return {
useSub: function () {
this.Sub.sayHi();
},
init: function () {
$(document).ready(this.useSub);
}
};
})();
Test.Sub = (function () {
return {
sayHi: function () {
alert('hi');
}
};
})();
Test.useSub(); // works
Test.init(); // explodes
Выше я пытаюсь создать пространство имен Test и добавить к нему объект Sub.У меня все было хорошо, пока я не попытался использовать объект в jQuery.Ошибка "Uncaught TypeError: Невозможно вызвать метод 'sayHi' из неопределенного".Если есть лучший способ сделать это, я открыт для этого.
Редактировать:
Очевидно, это был демонстрационный код.В моем реальном приложении решение, которое я выбрал, потому что я думаю, что оно наиболее ясное, таково:
var Namespace (function () {
return {
init: function () {
$(document).ready(function() {
Namespace.onReady();
}
},
onReady: function() {
alert('Now I am back in the Namespace scope. Proceed as planned');
}
};
})();
Edit2: Кажется, что все обратные вызовы jQuery требуют, чтобы они использовались таким образом, иначеоблажался.