当前位置: 首页 > Web前端 > HTML

js防止事件重复触发

时间:2023-04-02 22:29:03 HTML

在做项目的过程中调用函数之前,为了防止用户重复点击事件,往往会在每个函数中写一个flag来做判断,但是这种方式会导致代码冗余,所以使用functions在arguments.callee中,写了一个函数,如下://反重复触发stopReapeatEvent=function(obj){if(obj.callFlag)returntrue;obj.callFlag=!obj.callFlag;清除超时(obj.iTime);obj.iTime=setTimeout(function(){obj.callFlag=!obj.callFlag;},1000);}调用也很简单,//callif(stopReapeatEvent(arguments.callee))return;原理:补充caller和callee知识点caller:返回调用当前函数的函数的引用。functionName.callerfunctionName对象是正在执行的函数的名称。注意:对于函数,调用者属性仅在函数执行时定义。如果函数是从Javascript程序的顶层调用的,则调用者包含null。callee:返回正在执行的Function对象,即指定Function对象的文本。[function.]arguments.callee可选的函数参数是当前正在执行的函数对象的名称。表示被调用者属性的初始值为正在执行的Function对象。callee属性是arguments对象的成员,表示对函数对象本身的引用,便于匿名函数的递归或保证函数的封装。相反,此属性仅在关联函数正在执行时可用。还需要注意的是,callee有一个length属性,这有时更利于验证。arguments.length是实参的长度,arguments.callee.length是形参的长度,所以调用时可以判断形参的长度和实参的长度是否一致。请指正,谢谢!