美文网首页
js 防抖(外包和在方法原型上防抖)

js 防抖(外包和在方法原型上防抖)

作者: FAKEEER | 来源:发表于2021-02-24 21:51 被阅读0次
    $(function () {
      // document.getElementById('submit').addEventListener('click', debounce(submitFn));
      document.getElementById('submit').addEventListener('click', submitFn.debounce(1));
    })
    
    function submitFn (val) {
      console.log( $('#inputVal').val() );
      console.log(this);
      console.log(val);
    }
    
    Function.prototype.debounce = function () {
      const Fn = this;
      let flag = null;
      const args = arguments;
      return function () {
        let firstRun = !flag;
        if (flag) { clearTimeout(flag) };
        if (firstRun) {
          Fn.apply(this, args)
        }
        flag = setTimeout(() => {
          flag = null;  
        }, 1000)
      }
    }
    
    
    const debounce = function (Fn) {
      let flag = null;
      return function () {
        let firstRun = !flag;
        if (flag) { clearTimeout(flag) };
        if (firstRun) {
          Fn.apply(this, arguments)
        }
        flag = setTimeout(() => {
          flag = null;
        }, 500)
      }
    }
    

    相关文章

      网友评论

          本文标题:js 防抖(外包和在方法原型上防抖)

          本文链接:https://www.haomeiwen.com/subject/eisefltx.html