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番目のパラメータを用いて、配列の形で[.]どれだけのパラメータを伝えたいかを決定し、便利である.