调用函数
之前做项目的过程中,为了防止用户重复点击事件,往往在每一个函数里写一个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);}
调用的时候也很简单,
//调用if(stopReapeatEvent(arguments.callee)) return ;
原理:补充 caller 和 callee 知识点
caller:
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明:对于函数来说,caller 属性只有在函数执行时才有定义。 如果函数是由 Javascript 程序的顶层调用的,那么 caller 包含的就是 null 。
callee:
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
[function.]arguments.callee
可选项 function 参数是当前正在执行的 Function 对象的名称。说明
callee 属性的初始值就是正被执行的 Function 对象。
callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。而该属性仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。
求指正,谢谢!