0

関数の名前が変数に格納されている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.applyslideup.apply、関数は正しく実行されますが、実行すると、self.animation.applyまたはself[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は、関数の名前である文字列です。。。その場合、(適切なスコープで)変数にアクセスするには、角括弧表記を使用する必要があります。スライドアップがグローバルメソッドであると仮定すると、探しているコードは

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