以前作项目的过程当中,为了防止用户重复点击事件,每每在每个函数里写一个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是形参长度,由此能够判断调用时形参长度是否和实参长度一致。
求指正,谢谢!