JS - вызов функции по имени (в нотации объекта)
Я хочу очистить старый код и оптимизировать его, который часто использует тот же код. (только с разными именами функций для вызова)
Я делаю более простой пример, и нет, я не пишу об игре. Но этот пример выглядит более понятным для объяснения моей проблемы.
character.sleep(1);
character.changeName(name);
character.useItm(1423);
Более простой пример:
object.function(parameters)
Цель была примерно такой:
myFunc(funcName,value) {
character.{funcName}(value);
}
$('.btn_sleep') { myfunc('sleep','1'); }
$('.btn_cName') { myfunc('changeName','Harold'); }
$('.btn_uItem') { myfunc('useItem','1423'); }
Сначала я подумал об использовании eval(), потому что никакой пользовательский ввод не приблизится к этой функции. Но мне не нравится эта идея из-за потери производительности.
Затем я искал альтернативы и нашел window[] и новую функцию () в качестве решения.
Но я не понимаю, как его использовать, когда я хочу динамически вызывать функцию по имени в нотации объекта. (Или в более худших случаях, когда вам нужно получить результат для условия if из функции, которую вы вызывали с объектной нотацией.)
Кто-нибудь может помочь?
1 ответ
Лучший способ, которым я знаю, как динамически вызывать функции, это использовать скобочные обозначения, потому что это позволяет вам задавать путь к объекту с помощью переменной
function myFunc(funcName,value) {
character[funcName](value);
}
myfunc('sleep','1');