JavaScript中的this在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同。如何确认this的值:在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。1.全局执行环境中,指向全局对象(非严格模式、严格模式)2.函数内部,取决于函数被调用的方式 1.直接调用的this值:a.非严格模式:全局对象(window) b.严格模式:undefined2.对象方法调用的this值:调用者 /** * 如何确认this的值 * 1.全局执行环境 * 严格模式,非严格模式:全局对象(window) * 2.函数内部 * 2.1 直接调用 * 严格模式下:undefined * 非严格模式:全局对象(window) * 2.2 对象方法调用 * 严格模式,非严格模式:调用者 * 3.开启严格模式 * 脚本开启: 'use st
1.通过vm对象来代理data对象中属性的操作 (读/写)2.Vue中数据代理的好处:更加方使的操作data中的数据3.基本原理:通过Object.defineProperty()把data对象中所有属性添加到vm上。为每一个添加到vm上的属性,都指定一个getter/setter。在getter/setter内部去操作 (读/写) data中对应的属性。
1.hash的路由地址上有#号,history模式没有2.在做回车刷新的时候,hash模式会加载对应页面,history会报错4043.hash模式支持低版本浏览器,history不支持,因为是H5新增的API4.hash不会重新加载页面,单页面应用必备5.history有历史记录,H5新增了pushstate()和replaceState()去修改历史记录,并不会立刻发送请求6.history需要后台配置
MVVM是Model-view-ViewModel的缩写,是前端开发的架构模式M: 模型,对应的就是data的数据V:视图,用户界面,DOMVM: 视图模型: Vue的实例对象,连接view和Model的桥梁核心是提供对View和ViewModel的双向数据绑定,当数据改变的时候,ViewModel能监听到数据的变化,自动更新视图,当用户操作视图的时候,ViewModel也可以监听到视图的变化,然后通知数据进行改动,这就实现了双向数据绑定。ViewModel通过双向绑定把View和Model连接起来,他们之间的同步是自动的,不需要人为干涉,所以我们只需要关注业务逻辑即可,不需要操作DOM,同时也不需要关注数据的状态问题,因为它是由MVVM统一管理。
created:在渲染前调用,通常先初始化属性,然后做渲染mounted:在模板渲染完成后,一般都是初始化页面后,再对元素节点进行操作,在这里请求数据可能会出现闪屏的问题,created里不会,一般用created比较多。请求的数据对DOM有影响,那么使用created如果请求的数据对DOM无关,可以放在mounted
1.事件修饰符 .stop 阻止冒泡 .prevent 阻止默认行为 .capture 内部元素触发的事件先在此处理 .self 只有在event.target是当前元素时触发 .once 事件只会触发一次 .passive 立即触发默认行为 .native 把当前元素作为原生标签看待2.按键修饰符 .keyup 键盘抬起 .keydown 键盘按下3.系统修饰符 .ctrl .alt .meta4.鼠标修饰符 .left 鼠标左键 .right 鼠标右键 .middle 鼠标中键5.表单修饰符 .lazy 等输入完之后再显示 .trim 删除内容前后的空格 .number 输入是数字或转为数字
1.diff算法的优化2.静态提升3.事件侦听缓存
vuex肯定会重新获取数据,页面也会丢失数据1.把数据直接保存在浏览器缓存里 (cookie localstorage sessionstorage)2.页面刷新的时候,再次请求数据,达到可以动态更新的方法监听浏览器的刷新事件,在刷新前把数据保存到sessionstorage里,刷新后请求数据,请求到了用vuex,如果没有那就用sessionstorage里的数据
面试题:ElementUI是怎样做表单验证的?1.在表单中加rules属性,然后在data里写校验规则2.内部添加规则3.自定义函数校验
共同点:都可以控制元素的显示和隐藏区别:1.v-show是控制元素的display值来让元素显示和隐藏: v-if显示隐藏是把DOM元素整个添加和删除2.v-if有一个局部编译/卸载的过程,切换这个过程中会适当的销毁和重建内部的事件监听和子组件,v-show只是简单的css切换3.v-if才是真正的条件渲染: v-show从false变成true的时候不会触发组件的生命周期,v-if会触发生命周期4.v-if的切换效率比较低 v-show的效率比较高
铅笔Naruto
前端攻城狮