0

我在使用参数调用函数时遇到问题,其中函数的名称存储在变量中。我一直在使用.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.applyslideup.apply... 函数运行正常,但是当我运行self.animation.applyself[animation].apply 得到self.animation.apply is not a function. 如何使用存储在变量中的字符串值来调用slideup()函数,并将正确的参数传递给它?这个想法是self.animation变量将存储自定义动画函数的名称,可以通过自定义插件的传递选项覆盖。

4

2 回答 2

1

你得到一个字符串。您必须访问以此字符串命名的属性: this[this.animation]();

于 2013-03-13T16:01:54.503 回答
1

所以 Screen.animation 是一个字符串,它是一个函数的名称。. . 在这种情况下,您需要使用方括号表示法来访问变量(在适当的范围内)。假设 slideup 是一种全局方法,您正在寻找的代码是

window[self.animation].apply(self, [args]);
于 2013-03-13T17:12:27.050 回答