2015-05-14 1 views
0

Я хочу очистить старый код и оптимизировать его, что часто использует тот же код. (только для разных имен функций)JS - Функция вызова по имени (в обозначении объекта)

Я делаю более простой пример и нет, я не пишу об игре. Но этот пример выглядит более понятным для объяснения моей проблемы.

character.sleep(1); 
character.changeName(name); 
character.useItm(1423); 

Легче Пример:

object.function(parameters) 

Target было что-то вроде этого:

myFunc(funcName,value) { 
    character.{funcName}(value); 
} 

$('.btn_sleep') { myfunc('sleep','1'); } 
$('.btn_cName') { myfunc('changeName','Harold'); } 
$('.btn_uItem') { myfunc('useItem','1423'); } 

Сначала я подумал о том, чтобы использовать Eval(), потому что ни один пользователь-вход не будет приближаться к этому функции. Но мне не нравится эта идея из-за потери производительности.

Потом я посмотрел вокруг альтернатив и нашел окно [] и новую функцию() в качестве решения.

Но я не понимаю, как его использовать, когда я хочу динамически вызывать функцию по имени в объектной нотации. (Или в более тяжелых случаях, когда вы должны получить результат для if-condtion из функции, которую вы вызвали с обозначением объекта.)

Может ли кто-нибудь помочь?

+1

возможным дубликатом [Динамически объект доступа к свойству с помощью переменного] (HTTP: //stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable) –

+0

Спасибо, вот и все! И так быстро, приятно! – Sascha

ответ

0

Лучший способом я знаю, как динамически вызывать функции использует кронштейн обозначение, поскольку она позволяет установить путь к объекту с переменным

function myFunc(funcName,value) { 
    character[funcName](value); 
} 

myfunc('sleep','1'); 

 Смежные вопросы

  • Нет связанных вопросов^_^