工具函数
防抖:
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时
// 防抖
function _debounce(fn,delay){
var delay = delay || 200;
var timer;
return function(){
var th = this;
var args = arguments;
if(timer){
clearTimeout(timer);
}
timer = setTimeout(()=>{
timer = null;
fn.apply(th,args)
},delay)
}
}
节流:
当持续触发事件时,保证一定时间段内只调用一次事件处理函数
// 节流
function _throttle(fn,interval){
var last;
var timer;
var interval = interval || 200;
return function(){
var th = this;
var args = arguments;
var now = +new Date();
if(last && now - last < interval){
clearTimeout(timer)
timer = setTimeout(()=>{
last = now;
fn.apply(th,args)
},5000)
}else{
last=now;
fn.apply(th,args)
}
}
}
判断一个函数是否js运行时环境内置函数
function isNative (Ctor) {
return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
}