文章分类 - 前端面试
20230620
摘要:当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素,key 的作用主要是为了高效的更新虚拟 DOM
阅读全文
摘要:不能同名,因为不管是 computed 属性名还是 data 数据名还是 props 数据名都会被挂载在vm实例上,因此这三个都不能同名 if (key in vm.$data) { warn(`The computed property "${key}" is already defined in
阅读全文
摘要:1、errorCaptured 是组件内部钩子,当捕获一个来自子孙组件的错误时被调用,接收error、vm、info 三个参数,return false 后可以阻止错误继续向上抛出 2、errorHandler 为全局钩子,使用 Vue.config.errorHandler 配置,接收参数与err
阅读全文
摘要:有两种方法可以监听路由参数的变化,但是只能用在包含的组件内。第一种 watch: { '$route'(to, from) { // 在此处监听 }, },第二种 beforeRouteUpdate (to, from, next) { //这里监听 }
阅读全文
摘要:1、项目使用 keep-alive 时,可搭配组件 name 进行缓存过滤 2、DOM 做递归组件时需要调用自身 name 3、vue-devtools 调试工具里显示的组见名称是由 vue 中组件 name 决定的
阅读全文
摘要:Vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。1、需要 observe 的数据对象进行递归遍历,包括子属性对象的属性,都加上setter 和
阅读全文
摘要:从浏览器地址栏的请求链接开始,浏览器通过 DNS 解析查到域名映射的IP 地址,成功之后浏览器端向此 IP 地址取得连接,成功连接之后,浏览器端将请求信息通过HTTP 协议向此 IP 地址所在服务器发起请求,服务器接收到请求之后等待处理,最后向浏览器端发回响应,此时在 HTTP 协议下,浏览器从服务
阅读全文
摘要:1、浏览器查找域名对应的 IP 地址(DNS 查询:浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->根域名服务器) 2、浏览器向 Web 服务器发送一个 HTTP 请求(TCP 三次握手) 3、服务器 301 重定向(从 HTTP://example.com 重定向到 HTTP://
阅读全文
摘要:1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前网易官网是 HTTP,而网易邮箱是HTTPS 。) 2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的SSL 加密传输协议 3、
阅读全文
摘要:5 种常见的 HTTP 状态码以及代表的意义 200( OK):请求已成功,请求所希望的响应头或数据体将随此响应返回。303( See Other):告知客户端使用另一个 URL 来获取资源。 400( Bad Request):请求格式错误。1)语义有误,当前请求无法被服务器理解。除非进行修改,否
阅读全文
摘要:优化部分 ES6 新增了字符串模板,在拼接大段字符串时,用反斜杠(`)`取代以往的字符串相加的形式,能保留所有空格和换行,使得字符串拼接看起来更加直观,更加优雅。升级部分 ES6 在 String 原型上新增了 includes()方法,用于取代传统的只能用 indexOf()查找包含字符的方法(i
阅读全文
摘要:module、export、import 是 ES6 用来统一前端模块化方案的设计思路和实现方案。export、import 的出现统一了前端模块化的实现方案,整合规范了浏览器/服务端的模块化方法,用来取代传统的 AMD/CMD、requireJS、seaJS、commondJS 等等一系列前端模块
阅读全文
摘要:1、原因:每一个图例在没有数据的时候它会创建一个定时器去渲染气泡,页面切换后,echarts 图例是销毁了,但是这个 echarts 的实例还在内存当中,同时它的气泡渲染定时器还在运行。这就导致 echarts 占用 CPU 高,导致浏览器卡顿,当数据量比较大时甚至浏览器崩溃2、解决方法:在 mou
阅读全文
摘要:jQuery 的 ajax 返回的是 deferred 对象,通过 promise 的 resolve()方法将其转换为promise 对象。var jsPromise = Promise.resolve($.ajax('/whatever.json'));
阅读全文
摘要:var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i iMax){ iMax = json[i]; iIndex = i; } } alert('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
阅读全文
摘要:1、推荐在循环对象属性的时候使用 for...in,在遍历数组的时候的时候使用for...of 2、for...in 循环出的是 key,for...of 循环出的是 value 3、注意,for...of 是 ES6 新引入的特性。修复了 ES5 引入的 for...in 的不足4、for...o
阅读全文
摘要:this 的情况: 1、以函数形式调用时,this 永远都是 window 2、以方法的形式调用时,this 是调用方法的对象 3、以构造函数的形式调用时,this 是新创建的那个对象 4、使用 call 和 apply 调用时,this 是指定的那个对象 5、箭头函数:箭头函数的 this 看外层
阅读全文
摘要:继承有以下六种方法 1、原型链继承 JavaScript 实现继承的基本思想:通过原型将一个引用类型继承另一个引用类型的属性和方法 2、借用构造函数继承(伪造对象或经典继承) JavaScript 实现继承的基本思想:在子类构造函数内部调用超类型构造函数。通过使用 apply()和 call()方法
阅读全文
摘要:JavaScript 是一种通过原型实现继承的语言与别的高级语言是有区别的,像java,C#是通过类型决定继承关系的,JavaScript 是的动态的弱类型语言,总之可以认为JavaScript 中所有都是对象,在 JavaScript 中,原型也是一个对象,通过原型可以实现对象的属性继承,Java
阅读全文
摘要:内存泄漏指任何对象在您不再拥有或需要它之后仍然存在 哪些操作会造成内存泄漏 1、垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收 2、setTimeout 的第一个参数使用字
阅读全文