关于javascript:JavaScript-相关

7次阅读

共计 912 个字符,预计需要花费 3 分钟才能阅读完成。

1. call 和 apply 办法

call 办法用于扭转函数的 this 指向;

let objD = {name: '小李'}
let obj = {
  age: 7,
  showDetail: function () {console.log('my name:' + this.name)
  }
}
obj.showDetail()


应用 call 办法当前,扭转 this 的指向,前面的参数为失常函数参数;

let objD = {name: '小李'}
let obj = {
  age: 7,
  showDetail: function (age) {console.log('my name:' + this.name + ',my age:' + age)
  }
}
obj.showDetail.call(objD, 17)

用 apply 能够实现雷同的成果,只是参数要改成数组的模式;

let objD = {name: '小李'}
let obj = {
  age: 7,
  showDetail: function (age) {console.log('my name:' + this.name + ',my age:' + age)
  }
}
obj.showDetail.apply(objD, [16])

2. 手写防抖

防抖是闭包的一个利用,timer 能够被外界批改,又不会净化全局;

function debounce(fn, delay) {
  let timer
  return function (...args) {
    // 前面再点击就会销毁第一次的初始化,再 delay 之内就会始终循环这个过程而办法不执行
    if (timer) {clearTimeout(timer)
    }
    // 第一次点击初始化
    timer = setTimeout(() => {fn.apply(this, args)
    }, delay)
  }
}

3. reduce + hash 去重排序

const initData = (ydrz) => {let hash = {};
  ydrz = ydrz.reduce((pre, cur) => {hash[cur.czdz] ? '' : (hash[cur.czdz] = true && pre.push(cur));
    return pre;
  }, []);
  let result = ydrz.sort((a, b) => a.czdz - b.czdz);
  return result;
};
正文完
 0