У меня есть класс UserInterface
с общедоступным методом, который должен иметь возможность делегировать свою работу частной функции на основе параметра. Название частной обертки должно быть вызвано динамически:Как вызвать переменную частную функцию?
function UserInterface() {
// ...
this.getViewHtml = function(view) {
// Given this snippet, view would be passed in as
// either "First" or "Second".
// Wrong syntax, I know, but illustrative of what
// I'm trying to do, I think
return 'get' + view + 'ViewHtml'();
};
function getFirstViewHtml() {
return someHtml;
};
function getSecondViewHtml() {
return someHtml;
};
// ...
}
Как и следовало ожидать, если я не имею требование переменного, я могу назвать частную функцию просто отлично.
Как я могу получить свою публичную функцию для доступа к соответствующему частному методу с использованием имени функции на основе переменных? Это вне любого объекта window
, поэтому window['get' + view + 'ViewHtml']
не работает.
Любое понимание будет оценено по достоинству.
Да, я надеялся избежать переключателя/при заходе на посадку , Я никогда не видел подход к частным объектам, но попробую. Кажется, это хакки на первый взгляд, но, возможно, это только потому, что это ново для меня. :-) Благодаря. –
Это примерно так же взломано, как подход к окну ['get' + stuff]. Я не вижу никаких проблем с ним, как правило, связанных с хаками, поэтому вы, вероятно, хороши. – Tibos
Да, хороший момент. –