динамически вызывать локальную функцию в JavaScript

Есть много подобных вопросов о динамическом вызове функций по имени. Тем не менее, я не могу найти решение моей конкретной проблемы, где у меня есть локальные функции внутри замыкания, не открывая функции для открытого интерфейса моего объекта.

Давайте посмотрим код (это вымышленный пример) ...

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

Это не работает, потому что «this» - это MyObject, а локальные функции не отображаются. Также я хотел бы иметь возможность проверить, существует ли функция, прежде чем пытаться ее вызвать. например.

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

Я не совсем уверен, как поступить, если не раскрывать свои личные функции общедоступному интерфейсу, тогда все это работает.

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

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

У меня заканчиваются идеи. Ваша помощь и совет очень ценится.

Ответы на вопрос(4)

Ваш ответ на вопрос