在window.setTimeout方法中傳送對象
更新時間:2006年12月22日 00:00:00 作者:
setTimeout方法是js中的延時方法,很多js的bug,只需要使用該方法延時一下,就會自動解決了,簡直就是萬能藥方,也是我比較喜歡使用的最后手段。
其語法是:
window.setTimeout(expr,msec)
expr是執(zhí)行字符串,在msec毫秒之后,就會作為js運行。我昨天才發(fā)現(xiàn),原來expr也可以是一個函數(shù),呵呵,用這個特性,就可以進行對象的傳送了。
下面的代碼實現(xiàn)了把函數(shù)foo1中的對象p,延時傳送到函數(shù)foo2中的功能。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
現(xiàn)在很多框架其實都直接一種多投事件(它的實現(xiàn)原理也不復雜),一個多投事件本身,其實是是一個標準的函數(shù),但是它一般有下述的方法。
MuEvent.add = function (func) { ... }
MuEvent.addMethod = function (instance, func) { ... }
當使用第一種方法時,在激活func這個事件處理函數(shù)時,使用MuEvent的當前實例為this對象;第二種則使用傳入的instance作為this對象。
因此對于setTimeout來說,我們傳統(tǒng)的方法要這樣使用它來激活方法:
----------
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是用這種形式來實現(xiàn)的MuEvent。象Atlas之類的框架,大多也采用類似的方法。
window.setTimeout(expr,msec)
expr是執(zhí)行字符串,在msec毫秒之后,就會作為js運行。我昨天才發(fā)現(xiàn),原來expr也可以是一個函數(shù),呵呵,用這個特性,就可以進行對象的傳送了。
下面的代碼實現(xiàn)了把函數(shù)foo1中的對象p,延時傳送到函數(shù)foo2中的功能。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
現(xiàn)在很多框架其實都直接一種多投事件(它的實現(xiàn)原理也不復雜),一個多投事件本身,其實是是一個標準的函數(shù),但是它一般有下述的方法。
MuEvent.add = function (func) { ... }
MuEvent.addMethod = function (instance, func) { ... }
當使用第一種方法時,在激活func這個事件處理函數(shù)時,使用MuEvent的當前實例為this對象;第二種則使用傳入的instance作為this對象。
因此對于setTimeout來說,我們傳統(tǒng)的方法要這樣使用它來激活方法:
----------
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是用這種形式來實現(xiàn)的MuEvent。象Atlas之類的框架,大多也采用類似的方法。
您可能感興趣的文章:
- Js中setTimeout()和setInterval() 何時被調用執(zhí)行的用法
- Jquery中使用setInterval和setTimeout的方法
- jQuery中setTimeout的幾種使用方法小結
- jQuery setTimeout()函數(shù)使用方法
- Javascript對象中關于setTimeout和setInterval的this介紹
- setTimeout的延時為0時多個瀏覽器的區(qū)別
- setTimeout和setInterval的區(qū)別你真的了解嗎?
- setInterval和setTimeout停止的方法
- Javascript延遲執(zhí)行實現(xiàn)方法(setTimeout)
- JS延遲加載(setTimeout) JS最后加載
- Js setInterval與setTimeout(定時執(zhí)行與循環(huán)執(zhí)行)的代碼(可以傳入?yún)?shù))
- js setTimeout實現(xiàn)延遲關閉彈出層
- JavaScript setTimeout和setInterval的使用方法 說明
- setTimeout與setInterval在不同瀏覽器下的差異
- javascript setTimeout和setInterval 的區(qū)別
- JavaScript window.setTimeout() 的詳細用法
- 在Javascript類中使用setTimeout
- setTimeout在類中使用的問題!
- setTimeout和setInterval的瀏覽器兼容性分析
- JS中setTimeout()的用法詳解
相關文章
javascript框架設計讀書筆記之模塊加載系統(tǒng)
本文是司徒正美的《javascript框架設計》的第二章模塊加載系統(tǒng)的讀書筆記,根據(jù)自己的理解,簡要的跟大家講述了本章的主要內(nèi)容,方便大家更好的學習。2014-12-12javascript 傳統(tǒng)事件模型構造的事件監(jiān)聽器實現(xiàn)代碼
最近做東西需要添加大量的事件,而且要對所有事件進行比較細致的控制,于是便試著寫了個事件監(jiān)聽器。2010-05-05發(fā)布一個高效的JavaScript分析、壓縮工具 JavaScript Analyser
發(fā)布一個高效的JavaScript分析、壓縮工具 JavaScript Analyser...2007-11-11javascript while語句和do while語句的區(qū)別分析
這篇文章通過實例代碼較詳細的給大家介紹了javascript while語句和do while語句的區(qū)別,感興趣的朋友一起看看吧2007-12-12javascript 隨機數(shù) 與高級應用 附vbscript(asp) 隨機數(shù)總結
有時忘了程序的隨機數(shù)函數(shù)或javascript和vbscript的隨機數(shù)混亂了,特總結下兩者的隨機數(shù)函數(shù),以備以后使用方便。2007-10-10初學js插入節(jié)點appendChild insertBefore使用方法
由于可見insertBefore()方法的特性是在已有的子節(jié)點前面插入新的節(jié)點但是兩種情況結合起來發(fā)現(xiàn)insertBefore()方法插入節(jié)點,是可以在子節(jié)點列表的任意位置。2011-07-07jQuery實現(xiàn)鼠標放置名字上顯示詳細內(nèi)容氣泡提示框效果的方法分析
這篇文章主要介紹了jQuery實現(xiàn)鼠標放置名字上顯示詳細內(nèi)容氣泡提示框效果的方法,結合實例形式分析了jQuery結合bootstrap插件實現(xiàn)的鼠標響應式提示框相關操作技巧,需要的朋友可以參考下2020-04-04