防抖、节流、深拷贝
<script>
// 防抖 以最后一次输入为准
var textobj = { a: 1, b: 2 }
var request = function () {
console.log(this.a+this.b)
}
var debounce = function (fn, delaytime) {
let timer
return function () {
clearTimeout(timer)
timer = setTimeout(() => {
fn.call(textobj)
}, delaytime)
}
}
document.querySelector('.in').addEventListener('input', debounce(request, 1000))
// 节流 规定时间内只让第一次触发生效,后面的不生效 var throttle = function(fn,delay) { var lasttime = 0 // 闭包防止每次调用lasttime都为0 return function() { var nowtime = new Date().getTime() if(nowtime - lasttime >delay){ fn.call(textobj) lasttime = nowtime } } } document.querySelector('.in').addEventListener('input',debounce(request,1000)) // 深拷贝 function deepClone(obj) { let cloneObj if(obj && typeof obj !== 'object'){ cloneObj = obj } if(obj && typeof obj == 'object') { cloneObj = Array.isArray(obj) ? []:{} } for (let key in obj){ if(obj.hasOwnProperty(key)) { if(obj[key] && typeof obj[key] == 'object') { cloneObj[key] = deepClone(obj[key]) }else{ cloneObj[key] = obj[key]; } } } return cloneObj } console.log(deepClone({ x: 1, y: [ 5, 6, 7 ], z: { a: 0, b: 1 } })) var obj = 1 var obj2 = obj obj2 = 2 console.log(obj2) console.log(obj) </script>

浙公网安备 33010602011771号