У меня проблемы с вызовом функции с параметрами, где имя функции хранится в переменной. Я использовал .call
и .apply
, чтобы попытаться вызвать функцию, но у меня не было большого успеха.javascript .apply с переменным именем функции
Вот что я пытался:
function slideup(){
//exec animation
}
Screen.prototype.init = function() {
//has access to `this`, Screen is instantiated via constructor and passed the calling element
var self = this;
self.animation = 'slideup';//this is a switch in my code with default val of 'slideup'
function hashChange(){
self.animation.apply(self, [arg1,arg2]);
}
}
Если я заменить self.animation.apply
с slideup.apply
... функция работает нормально, но когда я бегу self.animation.apply
или self[animation].apply
я self.animation.apply is not a function
. Как я могу использовать строковое значение, хранящееся в переменной, для вызова функции slideup()
и передать ей соответствующие аргументы? Идея состоит в том, что переменная self.animation
сохранит имя настраиваемой функции анимации, которая может быть переопределена через переданные параметры пользовательского плагина.
derp? Я знаю, что я получаю строку, может быть, полное расписание поможет объяснить, что вы имеете в виду? Я пробовал самостоятельно [self.animation] .apply' и 'this [self.animation] .apply' и все ту же ошибку. –
Вы говорите, что мне нужно получить к нему доступ с уровня, на котором строка вернется как функция? –
действительно работает для меня: http://jsfiddle.net/QNYSV/ – Ven