![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端面试
文章平均质量分 51
唯爱赞多
学习学习别想玩
展开
-
JavaScript的继承
继承如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”继承使得子类具有父类别的各种属性和方法分类原型链继承构造函数继承(借助 call)组合继承原型式继承寄生式继承寄生组合式继承 是较优的解决继承的方式原型链继承最常见,每一个构造函数都有一个原型对象,原型对象又包含一个指向构造函数的指针,而实例则包含一个原型对象的指针 function Parent() { this.name = 'parent1';转载 2021-11-15 20:09:40 · 89 阅读 · 0 评论 -
v-if和v-show
控制手段不同show隐藏是➕display:none,dom还在if是将dom元素整个删除和添加编译过程不同show简单的基于css切换if切换有局部编译/卸载过程,切换过程中合适地销毁和重建内部的事件监听和子组件编译条件不同if是真正的条件渲染,条件为假不做操作show由false转为true 不会触发组件生命周期性能消耗:if有更高切换消耗,show有更高初始渲染消耗...原创 2021-11-02 08:56:01 · 130 阅读 · 0 评论 -
vue插槽slot
当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中slot位置),作为承载分发内容的出口slot插槽向组件内部指定位置传递内容,完成这个复用组件在不同场景的应用默认插槽 父组件在使用的时候,直接在子组件的标签内写入内容即可具名插槽 子组件用name属性来表示插槽的名字 父组件中在使用时在默认插槽的基础上加上slot属性,值为子组件插槽name属性值作用域插槽 子组件在作用域上绑定属性来将子组件的信息传给父组件使用,这些属性会被挂在父组件v-slot接受的对象上父组件中在使用.原创 2021-11-02 08:53:54 · 120 阅读 · 0 评论 -
vue组件通信、vuex方案怎么用?
概念组件通过某种方式传递信息达到某个目的解决了什么每个组件之间的都有独自的作用域,组件间的数据是无法共享的但实际开发工作中我们常常需要让组件之间共享数据目的要让它们互相之间能进行通讯,这样才能构成一个有机的完整系统组件间通信的分类父子组件之间的通信兄弟组件之间的通信祖孙与后代组件之间的通信非关系组件间之间的通信组件间通信的方案通过 props 传递通过 $emit 触发自定义事件使用 refEventBusparent或parent 或parent或rootattrs转载 2021-11-02 08:40:22 · 175 阅读 · 0 评论 -
vue 的diff算法
是什么diff 算法是一种通过同层的树节点进行比较的高效算法特点:比较只会在同层级进行, 不会跨层级比较在diff比较的过程中,循环从两边向中间比较diff 算法在很多场景下都有应用,在 vue 中,作用于虚拟 dom 渲染成真实 dom 的新旧 VNode 节点比较比较方式深度优先,同层比较...转载 2021-11-02 08:00:35 · 206 阅读 · 0 评论 -
垂直居中的方法
margin:automargin为负值table-cell(未脱离文档流)flex<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, i.原创 2021-09-03 13:15:50 · 71 阅读 · 0 评论 -
知识点整理
一、前端常规问题this 指向实现BFCargumentspromise.allapply防抖vue diff算法二、数据结构问题柯里化数字全排列合并两个有序数组二叉树路径和找峰值数组排序实现计算机求字符串值反转链表 n级嵌套爬楼梯问题最长回文子串裴波拉完全二叉最大子序和子字符串匹配...原创 2021-09-03 12:33:10 · 2376 阅读 · 0 评论 -
BFC的理解和作用12
BFC理解块级格式化上下文,指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关现象一个盒子不设置height,当内容元素都浮动时,无法撑起自身,这个盒子没有形成BFC如何创建BFC方法一:float的值不是none方法二:position的值不是static或者relative方法三:display的值是inline-block、flex或者inline-flex方法四:overflow:hidden<h转载 2021-06-28 09:13:51 · 99 阅读 · 0 评论 -
数组扁平化
定义:将一个多维数组变为一个一维数组方法一:flat()console.log(arr.flat(Infinity))方法二:正则表达式,弊端:把数组变成字符串const res2 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',')方法三:正则改良版本const res3 = JSON.parse('[' + JSON.stringify(arr).replace((/\[|\]/g, '')+ ']'))方法四:reduce转载 2021-06-22 13:16:38 · 62 阅读 · 0 评论 -
发布订阅模式11
如何实现?想好谁是发布者给发布者一个缓存列表 用于存放回调函数来通知订阅者发布消息 发布者遍历这个缓存列表 依次触发里面存放的订阅者回调函数转载 2021-06-22 12:58:23 · 122 阅读 · 0 评论 -
策略模式--2021前端面试知识点整理10
策略模式的定义定义一系列的算法 将他们封装起来 并且他们之间可以相互替换核心:将算法的使用 和 算法的实现 分离案例:绩效为 S的人年终奖有4倍公司,为A年终奖有3倍,B为2倍策略模式封装,将逻辑抽离出来适用于所有编程语言 /*算法实现*/ var pS = function () { } pS.prototype.calculate = function (salary) { return salary * 4 } var pA =转载 2021-06-19 19:43:21 · 106 阅读 · 0 评论 -
单例模式(混乱了)--2021前端面试知识点整理9
单例模式定义:1.只有一个实例 2.可以全局访问主要解决:一个全局使用的类 频繁的创建和销毁何时使用:当想控制实例的数目 节省系统化资源的时候如何实现:判断系统是否已经有这个单例 如果有则返回 没有则创建优点:内存中只要有一个实例 减少了内存开销 尤其是频繁的创建和销毁实例(比如说是首页页面的缓存)使用场景:1.全局缓存 2.弹窗es5 实现单例模式需求 实现一个登录的弹窗加载完成的时候 已经创建好 这个弹窗了 一开始是隐藏状态 之后一直弹窗出现<button id=转载 2021-06-16 20:31:01 · 107 阅读 · 0 评论 -
js作用域一般理解和深层理解--2021前端面试知识点整理8
js作用域一个变量的作用范围全局作用域在页面打开时被创建,页面关闭时销毁编写在script标签中的变量和函数 作用域为全局 在页面的任意位置都可以访问到在全局作用域中有全局对象window 代表一个浏览器窗口 由浏览器创建,可以直接调用全局作用域中的声明变量和函数会作为window对象的属性和方法保存函数作用域调用函数时,函数作用域被创建,函数执行完毕,函数作用域被销毁每调用一次函数就会创建一个新的函数作用域 他们之间是相互独立的在函数作用域中可以访问到全局作用域的变量,在函数外无转载 2021-06-11 18:04:25 · 115 阅读 · 1 评论 -
防抖节流优化图片懒加载--2021前端面试知识点整理7
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> img{ display: block; margin-bottom: 50px; width: 400px;转载 2021-06-11 16:06:55 · 92 阅读 · 0 评论 -
节流函数--2021前端面试知识点整理6
节流函数当持续触发事件的时候 保证一段时间内 值调用一次事件处理函数<button id="button">点击</button><script>function thro(func, wait) { //会执行你点击了多少次 就会执行多少次 // 这不是我们想要的 我们想要 假如在一秒内点100次,最后也只执行一次 let timerOut // 相当于在办理业务 return转载 2021-06-11 14:52:21 · 84 阅读 · 1 评论 -
防抖函数--2021前端面试知识点整理5
防抖函数当持续触发事件(键盘一直输入内容), 一定时间内没有在触发事件 (键盘抬起并且满足在1s内键盘没有再输入),事件处理函数才会执行一次(定时器)如果设定的时间到来之前 又一次触发了事件 就重新开始延时(重新开始定时器——将上一次还没结束的定时器清除掉,重新开始)持续输出<input type="text" id = "input"><script> var input = document.getElementById('input') //防抖函转载 2021-06-11 14:14:55 · 120 阅读 · 1 评论 -
浅拷贝、深拷贝--2021前端面试知识点整理4
前置知识js的一般数据类型的存储js的引用类型的数据存储var a = 123 //存在堆中var obj = {} //存在栈中浅拷贝是创建一个新对象,这个对象有着原始对象属性的一份精确拷贝如果属性是基本类型,拷贝就是基本类型的值引用类型,拷贝就是内存地址所以如果其中一个对象改变了这个地址,就会影响到另一个对象浅拷贝 赋值的区别var person = { name:'爱就一个字', hobby: ['学习', ['看电影','shopping'], '跑步']}v转载 2021-06-09 21:40:14 · 94 阅读 · 0 评论 -
箭头函数中的this--2021前端面试知识点整理3
箭头函数中的this箭头函数中的this 在定义函数时候绑定,不是在执行函数时绑定箭头函数中,this指向固定化。不是因为箭头函数内部有绑定this 的机制,实际原因:箭头函数根本没有自己的this,以至于 内部的this就是外层代码块的this。因为它没有this,所以不能用作构造函数箭头函数中的this是在定义函数的时候绑定var x = 11;var obj = { x:22, say: ()=>{ console.log(this.x); }}obj.say();转载 2021-06-09 14:56:57 · 128 阅读 · 0 评论 -
this大厂面试题--2021前端面试知识点整理2
js 有关this的大厂面试题在函数中直接使用function get(content){ console.log(content)}get(‘你好’) // 就是get.call(window, '你好')函数作为对象的方法被调用(谁调用我 我就指向谁)var person = { name:'张三', run: function (time) { console.log('${this.name} 在跑步 最多 ${time} min就不行了') }}person.run转载 2021-06-09 14:33:23 · 152 阅读 · 1 评论 -
预编译scope链
一、预编译预编译阶段:就是作用域的创建阶段作用域分为全局作用域和函数作用域函数作用域创建阶段有一个 js的变量对象(AO对象)供js引擎自己去访问的预编译做了哪些事情?创建ao对象找形参和变量的声明 作为ao对象的属性名 值是undefined实参和形参相统一找函数声明 会覆盖变量的声明function fn(a, c) { console.log(a) //function a() { } var a = 123 console.log(a) //1原创 2021-06-09 13:56:46 · 104 阅读 · 0 评论