set Timeout使用中の応答方法におけるthis引用乱れ指

1028 ワード

今日Extのソースコードを修正する時、setTimeoutの方法を使って、setTimeout(func,ms)の中でfuncの方法の中のthisはwindowsを指しています.ソースの対象ではありません.また、funcメソッドにパラメータを伝えるのは面倒くさいです.同僚とのコミュニケーションを通じて、Extにも対応する遅延任務があるapiを知りました.ソースは下記の通りです.

Ext.util.DelayedTask = function(fn, scope, args){
    var me = this,
        id,     
        call = function(){
            clearInterval(id);
            id = null;
            fn.apply(scope, args || []);
        };
 
    me.delay = function(delay, newFn, newScope, newArgs){
        me.cancel();
        fn = newFn || fn;
        scope = newScope || scope;
        args = newArgs || args;
        id = setInterval(call, delay);
    };
 
    me.cancel = function(){
        if(id){
            clearInterval(id);
            id = null;
        }
    };
}; 
このうち、2番目のパラメータscopeは、応答方法fnにおけるthisの参照が誰を指すかを決定し、fnにパラメータを導入したいならば、3番目のパラメータを用いて、配列の形で[.]どれだけのパラメータを伝えたいかを決定し、便利である.