摘要:1.一次展示几万条数据时,出现页面卡顿 甚至 假死状态,主要原因是页面加载的节点太多了。 解决方案:页面只需要渲染少部分的内容(可视区域),减少重新渲染组件和创建dom节点的时间 解决方案:vue-virtual-scroller 解决 2.eventbus中,$on监听事件重复执行 原因:监听事件
阅读全文
posted @ 2021-03-15 16:26
03 2021 档案
摘要:1.一次展示几万条数据时,出现页面卡顿 甚至 假死状态,主要原因是页面加载的节点太多了。 解决方案:页面只需要渲染少部分的内容(可视区域),减少重新渲染组件和创建dom节点的时间 解决方案:vue-virtual-scroller 解决 2.eventbus中,$on监听事件重复执行 原因:监听事件
阅读全文
posted @ 2021-03-15 16:26
摘要://手写eventhub(发布订阅) // 核心思路:1.使用一个对象作为缓存 // 2.on负责把方法发布到缓存的eventName数组中 // 3.emit负责遍历eventName中的方法数组 // 4.off负责清除缓存中的方法 class EventHub { cache={} on(ev
阅读全文
posted @ 2021-03-09 10:21
摘要:简单需求的话:直接 JSON.parse(JSON.stringify(someobj)) 复杂需求的话:实现一个”完美“的深拷贝,只能求教上百行代码的 Lodash.cloneDeep() 了 面试够用版: function deepClone(someobj){ let cloneObj; //
阅读全文
posted @ 2021-03-05 18:10
摘要:手写call: Function.prototype.ownCall=function(newObj,...args){ if(typeof newObj=='function'){ throw new TypeError('type error'); } let fn=Symbol('fn');/
阅读全文
posted @ 2021-03-05 17:17
摘要:相同点:1.都是用来改变函数的this对象指向的 2.调用时第一个参数都是需要指向的新对象 3.都可以利用后续参数传参 不同点:call、apply都是对函数的直接调用,而bind返回的是一个函数,需要进行再次调用才可以使用; 传递参数方式不同:call、bind 传递的是逗号分割的参数字符串,而a
阅读全文
posted @ 2021-03-05 14:44
|
||