自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (1)
  • 收藏
  • 关注

原创 MacBook Air 快捷键

打开谷歌控制台: option + command + i注释html文件内容: option + shift + a 效果:<!-- 注释html文件内容 -->

2021-08-01 20:35:34 3621

原创 vue2 element ui 的表格使用 sortablejs 拖拽列遇到的问题和解决方案

项目使用element ui 的表格实现拖动表头可改变列的宽度,又使用sortablejs实现表格的列可拖拽到其他列的位置,导致出现如下的一些问题:1、某一列宽变大或变小后,只有当前列可拖拽,其他列无法拖拽。解决方案:在列宽发生改变后,销毁当前拖拽实例,再重新创建拖拽实例。this.sortDemo.destroy()2、当表格没有横向滚动条时,某一列宽变大或变小时,其他列宽也会变大或变小。根因:表格的列不够多,不足以撑开表格的整体宽度。结论:当表格没有横向滚动条时,拉宽某一列,表

2023-07-16 23:23:27 2630 12

原创 35、js - 面试 - 如何一次渲染10万条数据?

如何一次渲染10万条数据?面试官想了解:面试者对原生js底层的了解、对渲染机制的理解。思路:第一种方案:分页 + setTimeout()第二种方案:分页 + window.requestAnimationFrame()减少重排 第三种方案:分页 + window.requestAnimationFrame() + document.createDocumentFragment()文档碎片

2023-06-13 18:50:18 404

原创 git的使用

git是一款免费、开源的版本控制系统,用于高效地处理任何或大或小的项目。作用:文件存档备份文件版本管理多人协同合作(自动合并)(1)创建不同分支的作用不同的分支代表不同的功能,可以独立开发和维护提交版本的记录,每个分支是互相独立的,和别的分支互不影响,尤其是多人👥开发同一项目,可以分别控制自己的代码。(2)如何编写代码:1️⃣切换到不同功能的分支去写业务代码。2️⃣暂存。3️⃣提交(会在对应的分支下产生提交记录,不会影响到别的分支)。4️⃣。

2023-06-10 18:44:50 1215

原创 34、js - 开发技巧

模板字符串嵌套模板字符串,使用对象的解构获取深层次变量

2023-06-08 22:17:51 99

原创 33、js - 面试 - 事件循环 微任务 宏任务

事件循环 微任务 宏任务js是单线程语言,也就是某一刻只能执行一行代码,为了让耗时代码不阻塞其他代码运行,设计了事件循环模型。事件循环是一个并发模型,负责执行代码、收集异步任务的模型,在调用栈空闲,反复调用任务队列里回调函数的执行机制,就叫事件循环。(1)调用栈的代码先执行。(2)遇到宏任务,就把宏任务放到宿主环境里进行计时,时间到了宏任务会到宏任务队列里进行排队等待执行。(3)当调用栈的代码执行完了,会先执行微任务队列里的任务。(4)微任务队列里的任务都执行完了,最后才执行宏任务队列里的任务。

2023-06-08 22:05:47 798

原创 32、js - async await 与 线程休眠

async await:让异步代码写起来像同步代码一样 try{}catch(){}只能用于捕获同步代码的错误,所以下面可以使用try{}catch(){} async是函数的修饰符,与函数一起使用

2023-06-08 22:02:58 132

原创 31、js - Promise

Promise基本使用Promise的静态方法 Promise.all()作用:高并发处理,同时发送请求,可以做到在所有请求都得到结果后再统一渲染页面数据语法:Promise.all([p1, p2, p3, p4]) all方法里传一个数组,数组由多个Promise对象组成返回结果:会返回一个新的Promise对象,.then()得到的结果是all()方法里多个Promise对象的结果组成的数组,.catch()方法里只要有一个请求发生错误就会走catch->调用了resolve(),把状态改

2023-06-08 11:56:37 601

原创 30、js - 上传头像

js - 上传头像

2023-06-07 18:04:48 324

原创 29、js - 简易版聊天机器人

js - axios案例:简易版聊天机器人

2023-06-07 10:37:46 144

原创 28、js - axios的基本使用

axios:没写method配置项,默认是get请求,query查询数据(属于get请求):需要params配置项,可以省略method配置项,请求数据(属于post请求):1、需要data配置项,2、需要method配置项执行完axios()方法得到的是promise对象,所以可以在axios()方法后面使用.then().catch()

2023-06-07 10:37:17 243

原创 27、js - 节流案例2:用节流控制页面滚动频次

节流案例2:用节流控制页面滚动频次

2023-06-07 10:32:50 100

原创 25、js - 面试 - 节流

节流:单位时间内,频繁地触发事件,只执行一次 使用场景:高频事件:鼠标移动mousemove、页面尺寸缩放resize、滚动条滚动scroll等等

2023-06-07 10:31:04 57

原创 26、js - 节流案例1:用节流记录视频播放时间

用节流记录视频播放时间 视频时间更新事件:当视频的currentTime更新时会触发timeupdate事件

2023-06-07 10:31:00 272

原创 24、js - 面试 - 防抖

防抖:单位时间内,频繁地触发事件,只执行最后一次。使用场景:搜索框

2023-06-06 15:01:41 69

原创 23、js - 面试 - call()apply()bind()

一、call() call()的作用:1、会直接调用函数2、会改变this指向 参数1:this指向 ,剩余参数:传给函数的参数。二、apply(),apply()的作用:1、会直接调用函数,2、会改变this指向。参数1:this指向,参数2:传给函数的参数,必须是个数组。 三、bind()。bind()的作用1、不会直接调用函数,2、会改变this指向, 3、会返回一个新函数,新函数里的this指向参数1,参数1:this指向,剩余参数:传给函数的参数

2023-06-06 15:00:53 72

原创 22、js - 处理异常

throw new Error('必须要传 a 和 b'); try { } catch(error){ } finally { } try:捕获异常 catch:处理异常,可以通过error参数获取到报错信息finally:不管是否有异常,最后都会执行

2023-06-06 14:58:00 68

原创 21、js - 面试 - 深拷贝

1、序列化 反序列化 JSON.parse(JSON.stringify())2、lodash的 _.cloneDeep()3、全局的structuredClone()4、自己手写递归函数实现深拷贝

2023-06-06 14:55:27 126

原创 19、js - 使用面向对象封装模态框

使用面向对象封装模态框

2023-06-06 14:53:04 102

原创 20、js - 面试 - 浅拷贝

Object.assign() 扩展运算符 [].concat()

2023-06-06 14:52:37 51

原创 17、js - 面试 - instanceof

instanceof:精确判断引用数据类型。instanceof原理:判断构造函数的原型对象是否在实例对象的原型链上

2023-06-06 14:50:53 68

原创 18、js - 面试 - 原型继承

先考虑父级,再考虑子级 1、父级: 人公共的属性和方法有哪些,做成构造函数进行封装 注意:一般公共的属性写到构造函数内部,公共的方法挂载到构造函数的原型对象上 2、子级: 男人继承人类的属性和方法,之后创建自己独有的属性和方法 女人同理 注意:因为对象覆盖了原型对象,所以再把constructor指回当前的构造函数 Man.pro

2023-06-06 14:50:04 39

原创 16、js - 面试 - 实例对象的__proto__

实例对象的__proto__ p1.__proto__ 在控制台显示成:[[Prototype]] 实例的__proto__ === 原型对象

2023-06-06 14:48:25 55

原创 15、js - 构造函数的原型对象

构造函数的原型对象

2023-06-06 14:48:18 40

原创 14、js - 字符串方法

字符串方法:split() startsWith() includes() trim()

2023-05-26 16:58:00 48

原创 13、js - Object方法

Object.keys()Object.values()Object.assign()

2023-05-26 16:50:06 40

原创 12、js - 面试 - 数组方法

js - 数组方法:filter() reduce() some() every() concat() sort() reverse()

2023-05-26 16:47:58 54

原创 11、 js - 数组/对象解构

数组/对象解构

2023-05-24 19:30:03 111

原创 10、js - 面试 - 箭头函数

总结:如何选择是否使用箭头函数: 1、dom元素注册事件,需要用到this时,就使用function,不要用箭头函数 2、定时器/延时器,需要用到this时,就用箭头函数 3、平时开发,优先选择使用箭头函数,不行再换成function

2023-05-24 17:36:28 96

原创 9、js - 展开运算符

展开运算符(...) 将一个数组/对象展开

2023-05-24 15:15:50 50

原创 8、js - 剩余参数

剩余参数和arguments的区别1、...语法符号,置于最末形参之前,用于获取多余的实参2、借助...获取的剩余实参,是个真数组3、剪头函数不支持arguments,但是可以使用剩余参数4、开发中,提倡多使用剩余参数

2023-05-24 14:19:15 98

原创 7、js - 面试 - arguments伪数组

arguments已经被淘汰 原因:1、可变参数的出现,es6新特性 2、特性问题arguments是一个伪数组,仅存在于函数中,作用是装载所有实参,伪数组用不了数组的方法因为arguments是动态伪数组,数据变化带来的性能损耗较大每次都会同步更新所有参数,如果参数过多则会出现问题在开启严格模式后就会彻底禁用arguments现在开发中基本不用arguments,可以使用可变参数完全替代arguments的功能arguments.callee代表函数本身,一般用于匿名函数自调后

2023-05-24 11:35:50 104

原创 6、js - 面试 - 函数提升

函数提升:函数声明的方式声明函数,整个函数会提升。函数表达式的方式声明函数,只有 var func2; 会提升,func2 = function(){}不会提升

2023-05-24 10:15:00 35

原创 5、js - 面试 - 变量提升

var声明的变量存在变量提升,只提升声明,不提升赋值,let声明的变量不存在变量提升

2023-05-24 10:14:41 44

原创 4、js - 面试 - 闭包

闭包:函数嵌套函数,内层函数访问了外层函数的局部变量。bug就不可以,但是下面的案例是语言特性本身的特点导致的内存泄漏,是我们无法阻止的泄漏,必须用闭包的时候还是得用闭包。(1)由于闭包空间的内存无法被及时地释放,因此会导致内存泄漏,但这个又是必要的,也是闭包的一个特点。举例:如果count变量不想被外面的人或者全局的人修改,因此可以放在闭包空间里面。(2)本该被释放的变量,无法及时释放,会存在闭包空间中,让这个变量可以更久远地使用。很显然,func1()执行完后,变量b已经被释放了,但是变量a不会被释放。

2023-05-23 17:57:59 377

原创 3、js - 面试 - 垃圾回收机制

在典型的代码中,许多对象的生命周期都很短:它们出现、完成它们的工作并很快死去,因此在这种情况下跟踪新对象并将其从内存中清除是有意义的。关于垃圾回收,js引擎做了许多优化,使垃圾回收运行速度更快,也使得现代浏览器的性能越来越高,并且不会对代码执行引入任何延迟。主要看当前创建的对象在堆内存中有没有被其他对象引用,如果没有被其他对象引用,那么该对象将被垃圾回收机制回收。两个对象内的属性相互引用对象,两个对象的引用计数永远大于0,无法回收导致内存泄漏。,对开发者来说,js的垃圾回收机制是自动的、无形的。

2023-05-22 19:41:14 636

原创 2、js - 面试 - 作用域链

作用域链查找规则:当前作用域找不到,会逐级查找父级作用域,直到全局作用域,都找不到会报错没有定义。

2023-05-22 16:49:39 47

原创 1、js - 面试 - 作用域

全局作用域、函数作用域、块级作用域、模块作用域

2023-05-22 16:05:24 53

原创 3、vue-router命名视图详解

vue-router命名视图详解

2023-05-16 23:48:09 194

原创 2、vue-router路由的多种传参方式

编程式导航的name和params的组合传参,如果没有和动态路由一起使用,详情页通过route.params来获取参数值,控制台会报警告。这是于2022年8月22日4.1.4版本的路由开始设置的,这样做的原因是“刷新页面获取到的参数会丢失”,详见。这是已知的瞬间状态,并且由于它在导航守卫中,因此在重新加载页面时将被保留。,并且详情页得到的route.params是个空对象{}。vscode插件: JSON to TS。修改方案:见路由传参的其他方式。1、选中json文件的内容。

2023-05-16 10:24:46 3133

chrome devtools.zip

chrome devtools

2021-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除