Короткая версия: вы не можете.Если doSomething
не определен как брат init
, тогда JavaScript будет искать последовательно более широкие области, пока не найдет функцию doSomething
или не хватит областей для поиска.
Более длинная версия:Вы можете предотвратить такое поведение, используя закрытый объект для хранения ваших личных вспомогательных функций, например:
function doSomething() {
alert("Something I don't want to do");
}
// Assuming My.Namespaced is already defined:
My.Namespaced.SingletonClass = (function() {
var helpers = {};
helpers.doSomething = function() {
alert("Something I want to do");
}
var init = function() {
helpers.doSomething();
}
return {
init: init
}
})();
My.Namespaced.SingletonClass.init();
Я не уверен, важно ли, чтобы вспомогательные функции действительно были родными (но я нене понимаю, почему это так важно).
Также имейте в виду, что My
и My.Namespaced
должны быть определены, прежде чем вы добавите SingletonClass
- и нет необходимости использовать цитирование в стиле JSONдля ключей в объекте, который вы возвращаете.