dynamically llamar a la función local en javascript

hay muchas preguntas similares sobre las funciones de llamada por nombre dinámicamente. Sin embargo, no puedo encontrar una solución a mi problema específico en el que tengo funciones locales dentro de un cierre sin exponer las funciones a la interfaz pública de mi objeto.

Vamos a ver un código (este es un ejemplo ficticio) ...

(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);

Esto no funciona porque "esto" es MyObject y las funciones locales no están expuestas. También me gustaría poder verificar si la función existe antes de intentar llamarla. p.ej

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

No estoy realmente seguro de cómo proceder, salvo exponer mis funciones privadas a la interfaz pública, todo funciona entonces.

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

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

Me estoy quedando sin ideas. Su ayuda y asesoramiento son muy apreciados.

Respuestas a la pregunta(8)

Su respuesta a la pregunta