![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
为什么选b
这个作者很懒,什么都没留下…
展开
-
!!!基础!!!
1.this关键字(指向)?this是JavaScript语言的一个关键字,它是函数运行时,在函数体内部自动生成一个对象,只能在函数体内部使用。函数的不同使用场合,this有不同的值。总的来说this就是函数运行时所在的环境对象。全局调用时,指向全局对象window在函数中调用,作为某个对象的方法调用,this指向这个上级对象在构造函数中调用,指向构造函数生成的新对象实例箭头函数,箭头函数没有自己的this,this指向父级上下文隐式绑定,函数的调用是在某个对象上触发的,即调用位置上存在上下文原创 2021-05-20 21:23:19 · 100 阅读 · 0 评论 -
vuex的核心概念和运行机制
Vuex 是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。使用 Vuex 统一管理状态的好处1.能够在 vuex 中集中管理共享的数据,易于开发和后期维护2.能够高效地实现组件之间的数据共享,提高开发效率3.存储在 vuex 中的数据都是响应式的,能够实时保持数据与页面的同步核心概念stateState 提供唯一的公共数据源,所有共享的数据都要统一放到 Store 的 State 中进行存储。Mutation用于变更state中的数据,并且只有Mu.原创 2021-05-05 00:56:09 · 130 阅读 · 0 评论 -
vue-router钩子函数和执行顺序
钩子函数全局导航钩子:一般用来判断权限,以及页面丢失时需要执行的操作;beforeEach()每次路由进入之前执行的函数。afterEach()每次路由进入之后执行的函数。beforeResolve()2.5新增单个路由(实例钩子):某个指定路由跳转时需要执行的逻辑。beforeEnter()beforeLeave()组件路由钩子:beforeRouteEnter()beforeRouteLeave()beforeRouteUpdate()导航守卫回调参数to:目标原创 2021-05-05 00:39:01 · 1315 阅读 · 0 评论 -
$nextTick
原理Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM。官方示例:new Vue({ // ... methods: { // ... example: function () { // modify data this.message = 'changed'原创 2021-05-05 00:23:23 · 230 阅读 · 0 评论 -
vue中修改数据页面不更新的原因和解决方案
原因在vue2中通过Object.defineProperty实现数据响应式,组件初始化时,对data中的item进行递归遍历,对item的每一个属性进行劫持,添加set,get方法。后来新加的newProperty属性,并没有通过Object.defineProperty设置成响应式数据,修改后不会视图更新。如何解决Vue.set()Vue.set( target, propertyName/index, value )参数:target:要修改的对象或数组propertyName/i转载 2021-05-05 00:16:49 · 1798 阅读 · 0 评论 -
v-for中key值的作用
对于用v-for渲染的列表数据来说,数据量可能一般很庞大,而且我们经常还要对这个数据进行一些增删改操作。v-for默认使用就地复用策略,列表数据修改的时候,会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素。key 是特殊的attribute主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地复用相同类型元素的算法。使用 key 时,它会基于 key 的变原创 2021-04-30 11:42:03 · 167 阅读 · 0 评论 -
v-if和v-for的优先级
v-for优先于v-if被解析如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环会执行,浪费浏览器性能。想要避免出现这种情况,需要在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环。如果条件出现在循环内部,可通过计算属性提前过滤掉那些不需要显示的项...原创 2021-04-29 21:18:57 · 609 阅读 · 0 评论 -
v-if与v-show的区别
都可以动态控制着dom元素的显示隐藏v-if: 控制DOM元素的显示隐藏是将DOM元素整个添加或删除;v-show: 控制DOM 的显示隐藏是为DOM元素添加css的样式display,设置none或者是block,DOM元素是还存在的性能对比v-if有更高的切换消耗;v-show有更高的初始渲染消耗使用场景v-if适合运营条件不大可能改变的场景下;v-show适合频繁切换;...原创 2021-04-29 20:06:05 · 144 阅读 · 0 评论 -
组件中data为什么是个函数
vue实例中的data属性既可以是一个对象,也可以是一个函数组件中定义data属性,只能是一个函数如果为组件data直接定义为一个对象 则会得到警告信息 警告说明:返回的data应该是一个函数在每一个组件实例中在定义好一个组件的时候,vue最终都会通过Vue.extend()构成组件实例vue组件可能会有很多个实例,采用函数返回一个全新data形式,使每个实例对象的数据不会受到其他实例对象数据的污染根实例对象data可以是对象也可以是函数(根实例是单例),不会产生数据污染情况..原创 2021-04-29 20:04:57 · 98 阅读 · 0 评论 -
vue双向数据绑定原理
1、关于双向数据绑定在前端开发中采用MVVM模式时,通常需要编写代码,将从服务器获取的数据进行“渲染”,展现到视图上。每当数据有变更时,会再次进行渲染,从而更新视图,使得视图与数据保持一致。另一方面,页面也会通过用户的交互,产生状态、数据的变化,这个时候,将视图对数据的更新同步到数据和后台服务器。2、如何回答vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听原创 2021-04-29 19:40:13 · 74 阅读 · 0 评论