资讯专栏INFORMATION COLUMN

js防止重复触发事件

NeverSayNever / 935人阅读

摘要:返回正被执行的对象,也就是所指定的对象的正文。可选项参数是当前正在执行的对象的名称。属性是对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。而该属性仅当相关函数正在执行时才可用。

调用函数

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

求指正,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/51564.html

相关文章

  • js防止重复触发事件

    摘要:返回正被执行的对象,也就是所指定的对象的正文。可选项参数是当前正在执行的对象的名称。属性是对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。而该属性仅当相关函数正在执行时才可用。 调用函数 之前做项目的过程中,为了防止用户重复点击事件,往往在每一个函数里写一个flag来做判断,但是这样的方式会导致代码冗余,所以借助 函数里arguments.cal...

    GT 评论0 收藏0
  • js防止重复触发事件

    摘要:返回正被执行的对象,也就是所指定的对象的正文。可选项参数是当前正在执行的对象的名称。属性是对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。而该属性仅当相关函数正在执行时才可用。 调用函数 之前做项目的过程中,为了防止用户重复点击事件,往往在每一个函数里写一个flag来做判断,但是这样的方式会导致代码冗余,所以借助 函数里arguments.cal...

    e10101 评论0 收藏0
  • JS进阶篇3---函数“节流” VS “防抖”

    摘要:目的都是为了降低回调函数执行频率,节省计算机资源,优化性能,提升用户体验。函数防抖事件频繁触发的情况下,只有经过足够的空闲时间,才执行代码一次。 函数节流和函数防抖的对比分析 一、前言 前端开发中,函数节流(throttle) 和 函数防抖(debounce) 作为常用的性能优化方法,两者都是用于优化高频率执行 js 代码的手段,那具体它们有什么异同点呢?有对这两个概念不太了解的小伙伴...

    hlcc 评论0 收藏0
  • js 函数节流和防抖

    摘要:函数节流和防抖防抖和节流的作用都是防止函数多次调用。页面窗口的事件方法节流方法闭包节流防抖一段时间内触发事件只执行一次。 js 函数节流和防抖 防抖和节流的作用都是防止函数多次调用。区别在于,假设一个用户一直触发这个函数,且每次触发函数的间隔小于wait,防抖的情况下只会调用一次,而节流的 情况会每隔一定时间(参数wait)调用函数。 throttle 节流 节流是将多次执行变成每隔一...

    atinosun 评论0 收藏0
  • JS进阶篇2---函数防抖(debounce)

    摘要:函数防抖的要点,是需要一个来辅助实现,延迟运行需要执行的代码。若计时期间事件没有被重新触发,等延迟时间计时完毕,则执行目标代码。而非立即执行版指的是触发事件后函数会立即执行,然后秒内不触发事件才能继续执行函数的效果。。 JS中的函数防抖 一、什么是函数防抖 概念:函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重...

    zhongmeizhi 评论0 收藏0

发表评论

0条评论

NeverSayNever

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<