這是一種最簡單的用法:
(function(){
alert('one second later...');
}).delay(1000);
這個函數(shù)會在1秒之后自動被執(zhí)行
我們看一下delay這個函數(shù)的實(shí)現(xiàn)方法:
delay: function(delay, bind, args){
return setTimeout(this.pass((args == null ? [] : args), bind), delay);
}
很顯然,它是使用了setTimeout來實(shí)現(xiàn)的,那么既然如此我們就可以清理他,下邊是實(shí)現(xiàn)方法:
var Fun=function(msg){
alert('fd');
};
var timer=Fun.delay(5000);
//做某些操作之后清理timer
clearTimeout(timer);
接下來我說一下他的高級用法:
var Fun=function(msg){
alert(typeOf(this))//查看被綁定對象的類型
alert(this.get('tag')+'|'+msg);//顯示對象名稱和傳遞的參數(shù)
};
//2秒后執(zhí)行Fun,同時把id='tab1'這個對象傳遞給Fun這個函數(shù)讓其this為$('tab1'),然后傳遞一個參數(shù)
Fun.delay(2000,$('tab1'),'啊');
這段代碼的意思是,延遲2秒,然后執(zhí)行Fun這個函數(shù),因?yàn)镕un這個函數(shù)我用了this,而默認(rèn)狀況下this對應(yīng)的對象是window對象,而我卻希望這個函數(shù)能夠操作某個節(jié)點(diǎn),所以呢,我就把對節(jié)點(diǎn)的綁定傳遞給了他,然后再傳遞msg,此時在函數(shù)內(nèi)使用this是對象就不再是window了,而是變成了我給他綁定的這個節(jié)點(diǎn)對象.