Javascript Function對象擴充之延時執行函數

來源:互聯網
上載者:User

不就利用window對象的setTimeout方法嗎?Bingo,一點沒錯!如果你在一個應用裡面常常要“延時執行某某函數”,那末基於DRY的原則,可以針對Function全域對象進行擴充,為函數增加一個延時方法如delay,這樣會讓你的代碼更簡潔有效。
擴站Function對象增加delay方法如下:

複製代碼 代碼如下:Function.prototype.delay=function(this1,timeout){
this1=this1||null;
timeout=timeout||0;
var _this=this;
var args=[];
//擷取參數,註:第1、第2個參數是保留參數
switch(arguments.length){
case 1:
timeout=parseInt(arguments[0]);
timeout=isNaN(timeout)?0:timeout;
timeout=timeout<0?0:timeout;
break;
default:
for(var i=0;i<arguments.length;i++){
if(i>1){args.push(arguments[i]);};
};
break;
};
var proxy=function(){
_this.apply(this1,args);
};
return window.setTimeout(proxy,timeout);
};

在firefox的firebug外掛程式的控制台下面測試下,代碼如: 複製代碼 代碼如下:var xx=function(n){
this.name=n;
};
xx.prototype.hi=function(a,b){
console.log(this.name+"-"+a+"-"+b);
};
var xx1=new xx("levin");
var t=xx1.hi.delay(xx1,1000,"cocoa","yoyo");
xx1.hi("guluglu","jigujigu");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.