前端面试精选
常用前端面试题,用于提高自身对前端的理解
水墨-青花
这个作者很懒,什么都没留下…
展开
-
有关JS 深拷贝和浅拷贝
首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。 浅拷贝:复制一层对象的属性,并不包括对象里面的为引用类型的数据,当改变拷贝的对象里面的引用类型时,源对象也会改变。 深拷贝:重新开辟一个内存空间,需要递归拷贝对象里的引用,直到子属性都为基本类型。两个对象对应两个不同的地址,修改一个对象的属性,不会改变...原创 2020-04-13 14:39:45 · 190 阅读 · 0 评论 -
Vue 移动端适配 amfe-flexible
1、首先下载: npm install px2rem-loader --save npm install amfe-flexible --save 2、main.js引入: import Vue from 'vue' import App from './App' import router from './router' // rem h5 适配 import 'amfe-...原创 2020-04-13 14:39:00 · 12337 阅读 · 5 评论 -
关于Vue子组件为什么不可以修改父组件传递的Prop?
Vue提倡单向数据流,即父级props的更新会流向子组件,但是反过来则不行。这是为了防止意外的改变父组件状态,使得应用的数据流变得难以理解。如果破坏了单向数据流,当应用复杂时,debug 的成本会非常高。 ...原创 2020-04-13 14:36:33 · 1184 阅读 · 0 评论 -
Vuex 的 mutation 中为什么 不能做异步操作?
Vuex中所有的状态更新的唯一途径都是mutation,异步操作通过 Action 来提交 mutation实现,这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。 每个mutation执行完成后都会对应到一个新的状态变更,这样devtools就可以打个快照存下来,然后就可以实现 time-travel 了。如果mutation支持异步操作,就没...原创 2020-04-13 14:34:43 · 10486 阅读 · 4 评论 -
Vue 的 keep-alive 的作用是什么?
keep-alive可以在组件切换时,保存其包裹的组件的状态,使其不被销毁,防止多次渲染。 其拥有两个独立的生命周期钩子函数 actived 和 deactived,使用keep-alive包裹的组件在切换时不会被销毁,而是缓存到内存中并执行 deactived 钩子函数,命中缓存渲染后会执行 actived 钩子函数。 ...原创 2020-04-13 14:30:15 · 2319 阅读 · 0 评论 -
Vue的data 为什么要写成函数形式
Vue 的组件都是可复用的,一个组件创建好后,可以在多个地方复用,而不管复用多少次,组件内的data都应该是相互隔离,互不影响的,所以组件每复用一次,data就应该复用一次,每一处复用组件的data改变应该对其他复用组件的数据不影响。 为了实现这样的效果,data就不能是单纯的对象,而是以一个函数返回值的形式,所以每个组件实例可以维护独立的数据拷贝,不会相互影响。 ...原创 2020-04-13 14:27:45 · 860 阅读 · 0 评论 -
Vue3.0为什么使用Proxy实现双向绑定
Object.defineProperty只能劫持对象的属性,而Proxy是直接代理对象 由于Object.defineProperty只能对属性进行劫持,需要遍历对象的每个属性。而Proxy可以直接代理对象。 Object.defineProperty对新增属性需要手动进行Observe, 由于Object.defineProperty劫持的是对象的属性,所以新增属性时,需要重新遍历对象,对...原创 2020-04-13 14:26:56 · 674 阅读 · 0 评论 -
Vue 中的Mixins
1. Mixins的使用场景 页面的风格不用,但是执行的方法和需要的数据类似时,可提取公共部分混入使用 2. 使用方法 提炼出公用钩子,数据,方法 在需要使用mixins的组件中挂载mixins, 即可直接使用mixins的数据和方法 3. Mixins的特点 1 方法和参数在各组件中不共享 2 **数据对象** mixin的数据对象和组件...原创 2020-03-19 11:10:57 · 210 阅读 · 0 评论 -
Vue 的父组件和子组件生命周期钩子执行顺序
原创 2020-03-19 09:57:57 · 441 阅读 · 0 评论 -
Vue的 v-show 和 v-if 有哪些区别?
v-if会在切换过程中对条件块的事件监听器和子组件进行销毁和重建,如果初始条件是false,则什么都不做,直到条件第一次为true时才开始渲染模块。v-show只是基于css进行切换,不管初始条件是什么,都会渲染。 所以,v-if切换的开销更大,而v-show初始化渲染开销更大,在需要频繁切换,或者切换的部分dom很复杂时,使用v-show更合适。渲染后很少切换的则使用v-if更合适。 ...原创 2020-03-19 09:46:13 · 240 阅读 · 0 评论 -
Vue2.0和Vue3.0的区别
1.项目目录结构 vue-cli2.0与3.0在目录结构方面,有明显的不同 vue-cli3.0移除了配置文件目录,config和build文件夹 同时移除了static静态文件夹,新增了public文件夹,打开层级目录还会发现,index.html移动到public中 2.配置项 3.0 config文件已经被移除,但是多了.env.production和env.de...原创 2020-03-19 09:32:19 · 22066 阅读 · 0 评论 -
IE盒子模型和W3C标准盒子模型的区别
w3c盒子模型的范围包括margin、border、padding、content,并且content部分不包含其他部分 IE盒子模型的范围包括margin、border、padding、content,和w3c盒子模型不同的是,IE盒子模型的content部分包含了padding和border W3C标准下padding、border所占的空间不在width、height范围内,而I...原创 2020-03-19 09:31:33 · 790 阅读 · 0 评论 -
从输入url到页面展示出来,中间发生了什么?
1.首先是域名解析(DNS解析) 首先浏览器解析输入的域名,先查找本地硬盘的host文件,看有没有和这个域名对应的ip,如果有,就直接使用这个ip. 如果没有,浏览器会发出一个DNS请求到本地DNS(域名分布系统)服务器.本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动. 请求到达DNS服务器后,DNS服务器首先会查询他的缓存记录,如果有对应的ip地址,则返回,如果没...原创 2020-03-19 09:29:45 · 158 阅读 · 0 评论 -
DOM事件流过程
三个阶段 在DOM兼容浏览器中,事件流分为3个阶段: (1)捕获阶段:事件从Document节点自上而下向目标节点传播的阶段; (2)目标阶段:真正的目标节点正在处理事件的阶段; (3)冒泡阶段:事件从目标节点自下而上向Document节点传播的阶段。 独特性质 DOM事件流最独特的性质是,文本节点也触发事件(在IE中不会),当鼠标单击“单击此文本”文本时会触发[click事件],该事...原创 2020-03-19 09:28:40 · 546 阅读 · 0 评论