原生 JS 的实例方法

# 原生 JS 的实例方法

# 防抖:

应用场景

1、seach 搜索联想,用户在不断输入输入值时,用防抖来节约请求资源。
2、windows 触发 resize 的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发这一次。
3、防止重复提交。

<button id="bn">快速点击</button>;

// 防抖
function debounce(fn, awai) {
  let timeout;
  return function () {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
    }, awai);
  };
}
//因为每一次点击都会清空定时器
function fn() {
  console.log(1);
}
document.getElementById("bn").addEventListener("click", debounce(fn, 2000));

# 节流:

应用场景

1、鼠标不断点击触发,mousedown(单位时间内只触发一次)。
2、监听滚动事件,比如是否滑到底部自动加载更多,用 throttle。

// 快速点击的时候,每隔两秒才触发一次事件
function thorrtle(fn, awai) {
  let preven = 0;
  return function () {
    let now = Date.now();
    if (now - preven > awai) {
      fn.apply(this, arguments);
      preven = now;
    }
  };
}
function fn() {
  console.log(1);
}
document.getElementById("bn").addEventListener("click", thorrtle(fn, 2000));