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小技巧
Jul 21 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
判断一个对象是否为jquery对象的方法
Mar 12 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
Jquery调用iframe父页面中的元素及方法
Aug 23 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
AngularJS通过$location获取及改变当前页面的URL
Sep 23 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
bootstrap datetimepicker2.3.11时间插件使用
Nov 19 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
使用vue实现多规格选择实例(SKU)
Aug 23 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实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[20:30]职业巡回赛回顾
2018/08/09 DOTA
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
python实现泊松图像融合
2018/07/26 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
如何利用cmp命令比较文件
2016/04/11 面试题
幼儿园实习自我鉴定
2013/12/15 职场文书
30年同学聚会感言
2014/01/30 职场文书
法学自荐信
2014/06/20 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
销售辞职信范文
2015/03/02 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书