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.