2013-02-17 2 views
-1

Я пишу плагин jQuery, который перехватывает, чтобы прокручивать и перетаскивать события, и поворачивает элемент для указания на другой элемент, когда инициируется соответствующее событие. В основном мой плагин просто определяет события, вычисляет правильный угол и соответственно поворачивает элемент, используя сторонний плагин. Для лучшего объяснения вы можете увидеть demos of my plugin.Javascript: вызов функции, определенной в переменной без eval

Я не хочу использовать определенный плагин вращения, поэтому имя функции вращения может отличаться. На данный момент я использую eval для создания имен пользовательских функций, но я хотел бы найти другой способ сделать это. Я пробовал поиск в Интернете, но пока не нашел решения.

Итак, есть ли способ обойти это? Имя функции вращения хранится в settings.rotateFunction:

eval("$(this)." + settings.rotateFunction + "(angle)"); 

До сих пор я пытался «новая функция (codeToEval)» метод, но по какой-то причине нарушается использование $ (это).

ответ

5

В JavaScript члены объекта (свойства или функции) можно получить с помощью этих двух обозначений:

  • object.memberName
  • object["memberName"]

второй особенно полезен, когда член не знает n во время разработки, но скорее во время выполнения. Вот почему вы можете вызвать свою функцию вращения таким образом:

$(this)[settings.rotateFunction](angle); 
+2

Спасибо, очень информативный ответ, который отлично работает! – Schlaus

4

Используйте следующий синтаксис:

$(this)[settings.rotateFunction](angle); 
+0

Спасибо, это работает отлично! Я отмечаю ответ @Robert как правильный ответ за то, что он немного более подробный. – Schlaus