继承的几种方式:
1.class中extend继承2.原型链继承3.借用构造函数继承4.组合式继承
Call、apply、bind区别:共同点:可以改变函数体内的this指向区别:1.Call跟apply会立即执行,而bind不会立即执行,因为bind返回的是函数
作用域和作用域链是什么?1.作用域:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。2.作用域链:当前作用域没有定义的变量,这成为自由变量。自由变量的值如何得到——向父级作用域寻找再一层一层向上寻找,直到找到全局作用域还是没找到,就宣布放弃。这种一层一层的关系,就是作用域链。
原型和原型链是什么?1.原型:在JavaScript中,每当定义一个函数数据类型(普通函数、类)时候,都会天生自带一个prototype属性,这个属性指向函数的原型对象,并且这个属性是一个对象数据类型的值。2.原型链:当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有则会去原型对象中寻找,如果找到则直接使用。如果没有则去原型的原型中寻找,直到找到Object对象的原型,Object对象的原型没有原型,如果在Object原型中依然没有找到,则返回undefined。
Computed跟watch的区别?1、功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调。2、是否调用缓存:computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取,而watch在每次监听的值发生变化的时候都会执行回调。3、是否调用return:computed中的函数必须要用return返回,watch中的函数不是必须要用return。4、computed默认第一次加载的时候就开始监听;watch默认第一次加载不做监听,如果需要第一次加载做监听,添加immediate属性,设置为true(immediate:true)5、使用场景:computed----当一个属性受多个属性影响的时候,使用computed-----购物车商品结算。watch–当一条数据影响多条数据的时候,使用watch-----搜索框
闭包是什么?闭包是指有权访问另外一个函数作用域中的局部变量的函数。声明在一个函数中的函数,叫做闭包函数。而且内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。闭包的特点:1、让外部访问函数内部变量成为可能2、局部变量会常驻在内存中3、可以避免使用全局变量,防止全局变量污染4、会造成内存泄漏(有一块内存空间被长期占用,而不被释放)。
Es6新特性1.块作用域let、const2.模块字符串``3.解构赋值4.箭头函数5.Class类6.导入import导出exportdefault7.新的基本类型Symbol
Vue生命周期?分别做了哪些事?
beforeCreate初始化界面前:在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。
created初始化界面后:在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发updated函数,也就是不会更新视图,SSR可以放这里。
beforeMount挂载前:完成模板编译,虚拟Dom已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发updated
mounted挂载完成:将编译好的模板挂载到页面(虚拟DOM挂载),可以在这进行异步请求以及DOM节点的访问,在vue用$ref操作
beforeUpdate更新数据前:组件数据更新之前调用,数据都是新的,页面上数据都是旧的组件即将更新,准备渲染页面,可以在当前阶段进行更改数据,不会造成重渲染
updated组件更新后:render重新渲染,此时数据和界面都是新的,要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新
beforeDestroy组件卸载前:实例销毁之前,在当前阶段实例完全可以被使用,我们可以在这时进行善后收尾工作,比如清除计时器
destroyed组件卸载后:组件已被拆解,数据绑定被卸除,监听被移出。
下面列出一些常用的DOM对象方法:
性能优化问题
Vuex怎么使用(状态管理模式)
深拷贝和浅拷贝区别:区别:浅拷贝只是增加了一个指针指向已存在的内存地址,仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。深拷贝是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存。
数组排重怎样一行代码就结束(set)
箭头函数:1.this方面:普通函数内部的this,默认指向window,严格模式下指向undefined;箭头函数内部的this,与上一级作用域中的this指向同一个地方。箭头函数比普通函数的使用简短更多;同时箭头函数通常是匿名函数。
Vue数据绑定原理:vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的.1)数据劫持、vue是通过Object.defineProperty()来实现数据劫持,其中会有getter()和setter方法;当读取属性值时,就会触发getter()方法,在view中如果数据发生了变化,就会通过Object.defineProperty()对属性设置一个setter函数,当数据改变了就会来触发这个函数;
Vue路由两种模式区别:Hash跟history区别:hash的话他就是有个#,操作的数据都是#后面的,改变hash值时不会刷新
rem跟em区别
常用适配方法
原型链继承怎么实现
Vue之间怎么传参
Get跟post请求区别
图片懒加载
Keep-alive作用
Js事件代理跟事件委托
Vue开发环境跟生产环境怎么切换的
Vuex如何实现数据持久化
Css动画