甚么是HDR?
HDR,简而言之,防止变形,以防把一场该事件误以为数次,敲按键是两个每晚单厢碰触到的HDR操作方式。
HDR情景
登入、来电等按键防止使用者点选博蒙阿,以至于推送了数次允诺,须要HDR修正应用程序询问处大半小时,resize 单次过分频密,导致排序过多,这时须要一场妥当,付录了HDRfunction throttle(fn, delay) { // 历史记录上一场表达式促发的天数 var lastTime = 0; return function() { // 历史记录现阶段表达式促发的天数 var nowTime = Date.now(); if (nowTime – lastTime > delay) { // 修改this对准难题fn.call(this); // 并行天数 lastTime = nowTime; } } }甚么是IIS
IIS,简而言之,掌控水的网络流量。掌控该事件出现的振幅,如掌控为1s出现一场,即使1两分钟出现一次。
IIS情景
scroll 该事件,内要一秒钟排序一场边线重要信息等应用程序播映该事件,内要一秒钟排序一场工程进度重要信息等input 框动态搜寻并推送允诺展现下拉列表,内要一秒钟推送一场允诺 (也可做HDR)function debounce(fn, delay) { // 历史记录上一场的延时器 var timer = null; return function() { // 清除上一场延时器clearTimeout(timer) timer = setTimeout(function() { fn.apply(this) }, delay) } }甚么是深复本、浅复本
如何区分深复本与浅复本,简单点来说,是假设B复制了A,当修改A时,看B是否会出现变化,如果B也跟着变了,说明这是浅复本,拿人手短,如果B没变,那是深复本,自食其力。
深复本
热门的表达式库lodash,也有提供_.cloneDeep用来做深复本
jquery 提供两个$.extend可以用来做深复本
JSON.parse(JSON.stringify()),不能复本表达式类型手写递归方法:
//定义检测数据类型的功能表达式 function checkedType(target) { return Object.prototype.toString.call(target).slice(8, -1) } //实现深度克隆—对象/数组 functionclone(target) { //判断复本的数据类型 //初始化变量result 成为最终克隆的数据 let result, targetType = checkedType(target) if (targetType === Object) { result = {} } else if (targetType === Array) { result = [] } else { return target } //遍历目标数据 for (let i in target) { let value = target[i] //判断目标结构里的每一值是否存在对象/数组 if (checkedType(value) === Object || checkedType(value) === Array) { //对象/数组里嵌套了对象/数组 result[i] = clone(value) } else { result[i] = value } } returnresult }浅复本
Object.assign方法
var obj = { a: 1, b: 2 } var obj1 = Object.assign(obj); obj1.a = 3; console.log(obj.a) // 3