JavaScript Function对象扩展之延时执行函数
作者:青柠时间:2026-10-25 08:02:42浏览:581
本文介绍如何通过扩展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"); 作者最新文章
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
JavaScript新手常犯的编码错误与最佳实践指南
2026-11-04 22:12:38
