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


Posted in Javascript onJuly 06, 2010

不就利用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");
Javascript 相关文章推荐
JS解析json数据并将json字符串转化为数组的实现方法
Dec 25 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
jQuery使用$.each遍历json数组的简单实现方法
Apr 18 Javascript
辨析JavaScript中的Undefined类型与null类型
May 26 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
SeaJS中use函数用法实例分析
Oct 10 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 Javascript
JavaScript经典效果集锦
Jul 06 #Javascript
前端开发必须知道的JS之原型和继承
Jul 06 #Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
Jul 06 #Javascript
一个基于jquery的图片切换效果
Jul 06 #Javascript
jQuery ajax BUG:object doesn't support this property or method
Jul 06 #Javascript
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 #Javascript
JavaScript对象、属性、事件手册集合方便查询
Jul 04 #Javascript
You might like
PHP生成带有雪花背景的验证码
2006/10/09 PHP
PHP重定向的3种方式
2013/03/07 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
jquery常用操作小结
2014/07/21 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
python操作xml文件详细介绍
2014/06/09 Python
Python实现配置文件备份的方法
2015/07/30 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python 字符串换行的多种方式
2018/09/06 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python中包的用法及安装
2020/02/11 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python 如何调用远程接口
2020/09/11 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
大学生自我鉴定
2013/12/16 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
大学生社团活动总结
2014/04/26 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2016年情人节问候语
2015/11/11 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL