在window.setTimeout方法中传送对象
其语法是:
window.setTimeout(expr,msec)
expr是执行字符串,在msec毫秒之后,就会作为js运行。我昨天才发现,原来expr也可以是一个函数,呵呵,用这个特性,就可以进行对象的传送了。
下面的代码实现了把函数foo1中的对象p,延时传送到函数foo2中的功能。
foo1()
function foo1(){
var p={x:3,y:4}
window.setTimeout(function(){foo2(p)},100)
}
function foo2(p){
alert(p.x)
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
foo1()
function foo1(){
var p={x:3,y:4}
window.setTimeout(function(){foo2(p)},100)
}
function foo2(p){
alert(p.y) //输出foo1的p={x:3,y:4} 的y
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
var pp=3;
foo1()
function foo1(){
var p={x:3,y:4}
var pp=1;
window.setTimeout(function(){foo2('pp')},100)
window.setTimeout("(function(){foo2("+pp+")})()",200)
//也就是说,这个函数其实将参数值传过去.相当于如下将foo2引用进来运行:
window.setTimeout("(function(){alert("+pp+")})()",200)
}
function foo2(pp){
alert(pp)
var pp=2;
alert(pp)
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
现在很多框架其实都直接一种多投事件(它的实现原理也不复杂),一个多投事件本身,其实是是一个标准的函数,但是它一般有下述的方法。
MuEvent.add = function (func) { ... }
MuEvent.addMethod = function (instance, func) { ... }
当使用第一种方法时,在激活func这个事件处理函数时,使用MuEvent的当前实例为this对象;第二种则使用传入的instance作为this对象。
因此对于setTimeout来说,我们传统的方法要这样使用它来激活方法:
----------
function doTimer() {
obj1.call();
obj2.call();
}
setTimeout(doTimer, 1000);
而使用多投事件的代码就可以如下:
----------
var e = new MuEvent();
e.addMethod(obj1, obj1.call);
e.addMethod(obj2, obj2.call);
setTimeout(e, 1000);
----------
当然,你想要写得COOL一点,可以是这样:
----------
setTimeout(function() {
return new MuEvent(obj1, obj1.call, obj2, obj2.call);
}(), 1000);
----------
作为一点点介绍,我所做的Qomo是用这种形式来实现的MuEvent。象Atlas之类的框架,大多也采用类似的方法。
相关推荐
-
js setTimeout实现延迟关闭弹出层
#flyout { border: solid 2px Gray; background-color: #FFF999; width: 300px; height: 100px; display: none; } var flyoutTimer; function mouseOutEvent() { //Hide flyout after 1 second when the mouse move out of the flyout zone flyoutTimer = setTimeout(hi
-
Jquery中使用setInterval和setTimeout的方法
方法1. 应用jQuery的扩展可以解决这个问题. 复制代码 代码如下: $(document).ready(function(){$.extend({ show:function(){ alert("ready"); }});setInterval("show()",3000);}); 方法2. 指定定时执行的函数时不要使用引号和括号. 复制代码 代码如下: $(function(){function show(){ alert("ready
-
setTimeout和setInterval的区别你真的了解吗?
甚至可能会错误的把两个实现定时调用的函数理解成了类似thread一样的东西, 认为会在一个时间片内, 并发的执行调用的函数, 似乎很好很强大, 但其实并不是如此, 实际的情况是javascript都是以单线程的方式运行于浏览器的javascript引擎中的, setTimeout和setInterval的作用只是把你要执行的代码在你设定的一个时间点插入js引擎维护的一个代码队列中, 插入代码队列并不意味着你的代码就会立马执行的,理解这一点很重要. 而且setTimeout和setInterval
-
jQuery中setTimeout的几种使用方法小结
我们通过例子来说明一下jQuery中setTimeout的几种使用方法, 首先准备好测试用的DIV和公共函数: 复制代码 代码如下: <div id="div_debug"></div> <script src="http://www.studyday.net/demo/jquery.js"></script> <script language="JavaScript"> funct
-
JavaScript setTimeout和setInterval的使用方法 说明
不同的是setInterval会每隔指定的时间段就执行一次代码,具有重复性.而setTimeout只会调用后执行一次. 下面通过函数的建立和函的自动删除来深刻理解两个函数: 1.函数的建立 setTimeOut的建立: 复制代码 代码如下: showTime(); function showTime() { var today = new Date(); alert("The time is: " + today.toString()); setTimeout("showTi
-
JS中setTimeout()的用法详解
setTimeout setTimeout 语法例子 用 setTimeout 来执行 function 不断重复执行的 setTimeout 设定条件使 setTimeout 停止 计分及计秒的 counter clearTimeout Set flag 1. SetTimeOut() 1.1 SetTimeOut()语法例子 1.2 用SetTimeOut()执行Function 1.3 SetTimeOut()语法例子 1.4 设定条件使SetTimeOut()停止 1.5 计分及秒的co
-
Javascript对象中关于setTimeout和setInterval的this介绍
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 复制代码 代码如下: function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn, 1000);//直接使用this引用当前对象 } } var o = new obj(); o.fn(); 然后
-
setInterval和setTimeout停止的方法
先来了解 setInterval : 1,HTML DOM setInterval() 方法 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数. 语法 setInterval(code,millisec[,"lang"]) 参数 描述
-
JS延迟加载(setTimeout) JS最后加载
第一 JS延迟加载 复制代码 代码如下: <script language="JavaScript" src="" id="my"></script> <script> setTimeout("document.getElementById('my').src='include/common.php'; ",3000);//延时3秒 </script> 一般情况下都是利用setT
-
setTimeout与setInterval在不同浏览器下的差异
.(新手可能认为setTimeout与setInterval是javascript函数,这是错误的.新手容易将javascript对象函数与DOM对象方法混淆.) 先来一段代码,大家猜猜在各种浏览器下的结果会是怎么样的呢? 复制代码 代码如下: function f(){ var s = 'arguments.length:'+arguments.length+'; '; for(var i=0,n=arguments.length;i< n;i++){ s += ' ['+i+']:'+arg
-
setTimeout在类中使用的问题!
我现在的做法,但我不想这样写: function calendar(name){ this._name = name; } calendar.prototype.thread=function(){ this._timeout = setTimeout(this._name + ".thread_result()", 200); } calendar.prototype.thread_result=function(){ alert("执行成功!"); } var
-
setTimeout和setInterval的浏览器兼容性分析
无意中测试AJAXRequest浏览器兼容性的时候,发现AJAXRequest.update方法在某些情况下在IE里有问题,经过测试找到是setTimeout和setInterval的问题. 问题出现在当调用AJAXRequest.update方法时,如果带了更新间隔及更新次数,那么在IE下面就会出现问题,具体表现为带了更新间隔时是函数工作,带上更新次数时函数无法在更新指定次数后停止执行. 测试几个例子之后找到了问题所在,在IE里,setTimeout和setInterval是不支持参数传递的.
-
Javascript延迟执行实现方法(setTimeout)
1.延迟切换tab 需求:页面上有几个tab,切换tab的时候,会对某个特定区域的数据进行拉取更新. 弊端:用户从第一个tab切换一直快速切到尾,就会产生n个ajax请求.其实用户只是需要看到最后一个tab的数据. 复制代码 代码如下: var changeTab = function(){ var timeId = 0; return function(tabId){ if(timeId){ clearTimeout(timeId); timeId=0; } setTimeout(functi
-
Js中setTimeout()和setInterval() 何时被调用执行的用法
定义setTimeout()和setInterval()经常被用来处理延时和定时任务.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除.从定义上我们可以看到两个函数十分类似,只不过前者执行一次,而后者可以执行多次,两个函数的参数也相同,第一个参数是要执行的code或句柄,第二个是延迟的毫秒数.很简单的定义,使用起来也很简单,但有时候我们的代码并不是按照我们的想象
-
javascript setTimeout和setInterval 的区别
setTimeout方法是定时程序,也就是在什么时间以后干什么.干完了就拉倒. setInterval方法则是表示间隔一定时间反复执行某操作. 如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行.如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法: 例如: tttt=setTimeout('northsnow()',1000); clearTimeout(tttt); 或者: tttt=setInterval('northsnow()',1
-
setTimeout的延时为0时多个浏览器的区别
由于不是很了解浏览器的内部执行策略,本文只能是通过前端一些测试依稀猜测些结论: 1)测试举例 做了两个例子: 1-1)脚本在页面中直接执行,通过刷新看结果 复制代码 代码如下: <!DOCTYPE HTML> <HTML> <HEAD> <script type="text/javascript"> var t=new Date; setTimeout(function(){ alert('cost time:'+(new Date-t)
-
在Javascript类中使用setTimeout第1/2页
最近遇到了一道 Javascript 考题,内容如下: 尝试实现注释部分的 Javascript 代码,可在其他任何地方添加更多 代码(如不能实现,说明一下不能实现的原因): var Obj = function(msg){ this.msg = msg; this.shout = function(){ alert(this.msg); } this.waitAndShout = function(){ // 隔五秒钟后执行上面的 shout 方法
-
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Document自带的方法: 循环执行:var timeid = window.setInterval("方法名或方法","延时");window.clearInterval(timeid); 定时执行:var tmid = window.setTimeout("方法名或方法", "延时");window.clearTimeout(tmid); 举例说明: A.当要执行的方法中不需要参数时 复制代码 代码如下: <scr
-
JavaScript window.setTimeout() 的详细用法
js的setTimeout方法用处比较多,通常用在页面刷新了.延迟执行了等等.但是很多javascript新手对setTimeout的用法还是不是很了解.虽然我学习和应用javascript已经两年多了,但是对setTimeout方法,有时候也要查阅资料.今天对js的setTimeout方法做一个系统地总结. setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! setTimeo
-
jQuery setTimeout()函数使用方法
setTimeout()从载入后延迟指定的时间去执行一个表达式或者是函数;仅执行一次 ;和window.clearTimeout一起使用. 我在 复制代码 代码如下: $(document).ready(function(){setTimout(test(),200); function test() { alert(1); } }); 只会执行一次,有朋友说可以使用 复制代码 代码如下: setInterval ("showTime()", 5000);function showTi
随机推荐
- jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
- IE默认搜索引擎被修改
- 浅谈TreeSet中的两种排序方式
- 通过java反射机制动态调用某方法的总结(推荐)
- 基于python select.select模块通信的实例讲解
- Python下Fabric的简单部署方法
- iOS实现代码只执行一次
- iOS开发之路--微博骨架搭建
- hovertree插件实现二级树形菜单(简单实用)
- Android编程之微信SDK分享功能过程步骤详细分析
- 一步一步学习PHP(1) php开发环境配置
- javascript addLoadEvent函数说明
- 全面解析bootstrap格子布局
- 使用JavaScript根据图片获取条形码的方法
- insert语句太长用StringBuilder优化一下
- Java中Hashtable类与HashMap类的区别详解
- 深入理解NumPy简明教程---数组2
- 新旧MFC版本实现CEdit透明的2种方法的实例代码
- 净化网络环境全面出击 引发空间选购新观念
- 正则表达式模式匹配字符串基础知识