文章分类 - 面试题总结
描述了在前端javascript的原理问题 面试题总结
摘要:flex:1的理解 flex属性 是 flex-grow、flex-shrink、flex-basis三个属性的缩写。 flex-grow 定义项目的的放大比例; 默认值为0 即使存在剩余空间,也不会放大 所有项目的flex-grow为1 等分剩余空间 自动放大占位 flex-grow为n的项目 占
阅读全文
摘要:请求拦截器主要处理 token的统一注入问题 // axios的请求拦截器 service.interceptors.request.use( config => { // do something before request is sent if (store.getters.token) {
阅读全文
摘要:递归解析——不推荐 普通变树形 功能:把普通数组 处理成 树形数组 var list = [ { id: 1, name: "冰箱", pid: "" }, { id: 2, name: "海尔冰箱", pid: 1 }, { id: 3, name: "美的冰箱", pid: 1 }, { id:
阅读全文
摘要:五、防抖 1、什么是防抖 防抖策略(debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。 好处:能够保证用户在频繁触发某些事件的时候,不会频繁的执行回调,只会被执行一次 2、防抖的应用场景 用户在输入框中连续输入一串字符时,可以通过防抖策略,只在
阅读全文
摘要:watch可以实现异步 1、computed能完成的功能watch也能完成2、watch能完成的功能computed不一定能完成,比如watch可以进行异步操作;、
阅读全文
摘要:一、var 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象 var a = 10; console.log(window.a) // 10 使用var声明的变量存在变
阅读全文
摘要:底层原理就是两个指令的语法糖 分别是v-bind:绑定data里面的数据 数据驱动视图 以及v-on: 视图修改改变data中的数据 实现双向数据绑定 <input v-model="msg" /> <input v-bind:value="msg" v-on:input="msg=$event.t
阅读全文
摘要:一、是什么 在HTML中,每个元素都可以理解成一个盒子,在浏览器解析过程中,会涉及到回流与重绘: 回流:布局引擎会根据各种样式计算每个盒子在页面上的大小与位置 重绘:当计算好盒模型的位置、大小及其他属性后,浏览器根据每个盒子特性进行绘制 具体的浏览器解析渲染机制如下所示: 解析HTML,生成DOM树
阅读全文
摘要:1px问题 在不同的移动设备中,css像素的1px因为dpr的不同会使用dpr个物理像素来显示,这就造成1px在不同设备上显示的粗细不一致,为解决这个问题,可采用如下方案: 伪元素+transform: scale(0.5) 方案 给需要设置1px边框的元素添加border-1px类 .border
阅读全文
摘要:一、前言 在前端开发的时候,我们有时候会需要用到一个三角形的形状,比如地址选择或者播放器里面播放按钮 通常情况下,我们会使用图片或者svg去完成三角形效果图,但如果单纯使用css如何完成一个三角形呢? 实现过程似乎也并不困难,通过边框就可完成 二、实现过程 在以前也讲过盒子模型,默认情况下是一个矩形
阅读全文
摘要: 每一个实例对象又有一个 _ proto _ 属性, 指向的构造函数的prototype原型对象, 构造函数的原型对象也是一个对象,也有_proto_属性, 这样一层一层往上找就形成了原型链。
阅读全文
摘要:1、new是什么 在JavaScript中,new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){ this.name = name; this.age = age; } Person.prototype.sayName = function (
阅读全文
摘要:生命周期&生命周期函数 生命周期:是指一个对象从创建到运行到销毁的整个过程,被称为生命周期 生命周函数:在不同的生命周期阶段会自动执行对应的函数,而这些函数则被成为生命周期函数 1. 什么是生命周期 组件实例从创建到销毁的过程就是生命周期2.vue有四个阶段 创建 挂载 更新 销𣪧3. 创建 有二
阅读全文
摘要:01-数据类型 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegEx
阅读全文
摘要:生活比喻: 小赵和小王去银行办业务,首先,需要取号之后进行排队 宏任务队列 假设当前银行网点只有一个柜员来办理业务,那么小赵在办理业务时,小王只能等待 单线程,宏任务依次执行 小赵主要是来办理存款业务,顺便再来办理一张信用卡,兑换一张马年纪念币 宏任务执行完成,检查执行相关的微任务 那么就需要等待小
阅读全文
摘要:直接参考参考文献 computed 它是计算属性。主要用于值的计算并一般会返回一个值。所以它更多⽤于计算值的场景 它具有缓存性。当访问它来获取值时,它的 getter 函数所计算出来的值会进行缓存 只有当它依赖的属性值发生了改变,那下⼀次再访问时才会重新调⽤ getter 函数来计算 它适⽤于计算⽐
阅读全文
摘要:slice和splice的区别 两者区别: arr.slice() 切片 语法: arrayObject.slice(start,end) 作用: slice() 方法可从已有的数组中返回选定的元素 |参数|描述| |--|--| |start|必需。规定从何处开始选取。如果是负数,那么它规定从数组
阅读全文
摘要:substr和substring的区别 两者区别:substr和substring区别在于第二个形参作用不同,substr是取字符长度,而substring是截取的位置,一个是相对,一个是绝对 substr(star,length) 截取字符 作用:从star位置开始(索引号),length取的字符
阅读全文
摘要:深拷贝和浅拷贝实现原理 浅拷贝 概念 对数据拷贝的时候只拷贝一层,深层次的只拷贝了地址 const obj = { a: 1, goods: { name: '鞋', price: 199 } } const b = { ...obj } Copied! 这就是浅拷贝 问题 我们可以通过代码来看一下
阅读全文