JavaScript Function对象扩展之延时执行函数

作者:青柠

时间:2026-10-25

浏览:580

本文介绍如何通过扩展JavaScript全局Function对象,为所有函数添加一个名为delay的延时执行方法。该方法基于window.setTimeout实现,允许开发者指定执行上下文、延迟时间及额外参数,从而简化需要延时调用函数的代码逻辑,提升代码简洁性与复用性。

文章目录

Function对象扩展之延时执行函数

这实际上是利用了window对象的setTimeout方法。没错!如果在一个应用中经常需要“延时执行某个函数”,那么基于DRY(Don't Repeat Yourself)原则,可以对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");

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章