我在使用params调用函数时遇到问题,其中函数的名称存储在变量中。我一直在使用.call
和.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()
函数,并将其传递给正确的args?我们的想法是self.animation
变量将存储自定义动画函数的名称,可以通过自定义插件传递的选项覆盖它。
答案 0 :(得分:1)
你得到一个字符串。您必须访问以此字符串命名的属性:
this[this.animation]();
答案 1 :(得分:1)
所以Screen.animation是一个字符串,它是一个函数的名称。 。 。在这种情况下,您需要使用方括号表示法来访问变量(在适当的范围内)。假设slideup是一个全局方法,那么您要查找的代码是
window[self.animation].apply(self, [args]);