dynamically chama a função local em javascript

existem muitas perguntas semelhantes por aí sobre chamar funções por nome dinamicamente. No entanto, não consigo encontrar uma solução para meu problema específico, onde tenho funções locais dentro de um fechamento sem expor as funções à interface pública do meu objet

Vamos ver algum código (este é um exemplo fictício) ...

(function(window,$) {

  MyObject = (function($) {
    var obj = {};
    obj.publicMethod = function(number,otherarg) {
      this['privateMethod'+number].apply(this,[otherarg]);
    };

    var privateMethod1 = function(arg) {
      //do something with arg
    };

    var privateMethod2 = function(arg) {
      //do something else with arg
    };

    return obj;
  })($);

  window.MyObject = MyObject;
})(window,jQuery);

Isso não funciona porque "this" é MyObject e as funções locais não são expostas. Também gostaria de poder verificar se a função existe antes de tentar chamá-la. por exemplo

var func_name = 'privateMethod'+number;
if($.isFunction(this[func_name])) {
  this[func_name].apply(this,[otherarg]);
}

Não tenho muita certeza de como proceder, além de expor minhas funções privadas à interface pública, tudo funciona então.

obj.privateMethod1 = function(arg) {
  //do something with arg
};

obj.privateMethod2 = function(arg) {
  //do something else with arg
};

Estou ficando sem idéias. Sua ajuda e aconselhamento são muito apreciados.

questionAnswers(8)

yourAnswerToTheQuestion