J'ai des problèmes pour appeler une fonction avec params, où le nom de la fonction est stocké dans une variable. J'ai utilisé .call
et .apply
pour essayer d'appeler la fonction, mais je n'ai pas eu beaucoup de succès.javascript .apply avec le nom de la fonction variable
Voici ce que j'ai essayé:
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]);
}
}
Si je remplace self.animation.apply
avec slideup.apply
... la fonction fonctionne correctement, mais quand je lance self.animation.apply
ou self[animation].apply
je reçois self.animation.apply is not a function
. Comment puis-je utiliser la valeur de chaîne stockée dans la variable pour appeler la fonction slideup()
et lui transmettre les arguments appropriés? L'idée est que la variable self.animation
va stocker le nom d'une fonction d'animation personnalisée, qui peut être surchargée via les options passées du plugin personnalisé.
derp? Je sais que j'ai une chaîne, peut-être qu'une phrase complète aiderait-elle à expliquer ce que tu veux dire? J'ai essayé 'self [self.animation] .apply' et 'this [self.animation] .apply' et toujours la même erreur. –
dites-vous que je dois y accéder à partir du niveau auquel la chaîne reviendrait en tant que fonction? –
ne fonctionne pour moi: http://jsfiddle.net/QNYSV/ – Ven