以前作項目的過程當中,爲了防止用戶重複點擊事件,每每在每個函數裏寫一個flag來作判斷,可是這樣的方式會致使代碼冗餘,因此藉助 函數裏arguments.callee ,寫了一個函數,以下:函數
// 防重複觸發 stopReapeatEvent=function (obj) { if (obj.callFlag) return true; obj.callFlag=!obj.callFlag; clearTimeout(obj.iTime); obj.iTime=setTimeout(function(){ obj.callFlag=!obj.callFlag; }, 1000); }
調用的時候也很簡單,code
//調用 if(stopReapeatEvent(arguments.callee)) return ;
返回一個對函數的引用,該函數調用了當前函數。對象
functionName.caller遞歸
functionName 對象是所執行函數的名稱。事件
說明:對於函數來講,caller 屬性只有在函數執行時纔有定義。 若是函數是由 Javascript 程序的頂層調用的,那麼 caller 包含的就是 null 。ip
返回正被執行的 Function 對象,也就是所指定的 Function 對象的正文。io
[function.]arguments.callee
可選項 function 參數是當前正在執行的 Function 對象的名稱。function
說明匿名函數
callee 屬性的初始值就是正被執行的 Function 對象。原理
callee 屬性是 arguments 對象的一個成員,它表示對函數對象自己的引用,這有利於匿名函數的遞歸或者保證函數的封裝性。而該屬性僅當相關函數正在執行時纔可用。還有須要注意的是callee擁有length屬性,這個屬性有時候用於驗證仍是比較好的。arguments.length是實參長度,arguments.callee.length是形參長度,由此能夠判斷調用時形參長度是否和實參長度一致。
求指正,謝謝!