中国银行前端开发vue面试题(有关vue的常见面试题(上))

2026-04-16 11:15:01 4

中国银行前端开发vue面试题(有关vue的常见面试题(上))

大家好,关于中国银行前端开发vue面试题很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于有关vue的常见面试题(上)的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

有关vue的常见面试题(上)

防抖 :一个频繁触发的函数,在规定时间内,只让最后一次生效,前面的不生效。
例:防抖经常用在我们搜索框输入搜索,点击提交,防止等;
节流 :一个频繁触发的函数,在规定时间内,函数执行一次后,只有大于设定的执行周期后才会执行第二次。
例:节流一般在onresize、mousemove、滚动事件等事件中使用,防止过多的请求造成服务器压力

盒模型的组成:元素的内容content、元素的内边距padding、元素的外边距margin、元素的边框border
盒模型分为 : W3C标准盒子 、IE盒子
W3C标准盒子(content-box) :又称内容盒子,是指块元素box-sizing属性为content-box的盒模型,盒子总宽度 = margin + border + padding + width
IE盒子(border-box) :又称怪异盒模型(边框盒子),是指块元素box-sizing属性为border-box的盒模型,盒子总宽 = margin + width

1.toString()与join()一样都是把数组转成以逗号分割的字符串
2.pop() 删除数组的最后一项
3.push() 往数组最后添加新数据
4.shift() 删除数组最前面的一项

var定义的变量可以修改,如果不初始化会输出undefined,不会报错。
const定义的变量不可以修改,而且必须初始化
let是块级作用域,函数内部使用let定义后,对函数外部无影响。

1.都支持服务器端渲染
2.都有虚拟dom,组件化开发,都有‘props’的概念,允许父组件往子组件传送数据,都实现webComponent规范
3.数据驱动视图
4.都有支持native的方案,React的React native,Vue的weex
5.构建工具
React和Vue都有自己的构建工具,你可以使用它快速搭建开发环境。React可以使用Create React App (CRA),而Vue对应的则是vue-cli。都有管理状态,React有redux,Vue有自己的Vuex

设计思想
react
1.函数式思想,all in js ,jsx语法,js操控css
2.单项数据流
3.setState重新渲染
4.每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制,如果为true继续渲染、false不渲染,但Vue将此视为默认的优化。
vue
1.响应式思想,也就是基于数据可变的。把html、js、css、组合到一起,也可以通过标签引擎组合到一个页面中
2.双向绑定,每一个属性都需要建立watch监听(页面不用,涉及到组件更新的话需要)
3.Vue宣称可以更快地计算出虚拟 DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树
性能
react ----大型项目、优化需要手动去做,状态可控
vue ------中小型项目、状态改变需要watch监听,数据量太大的话会卡顿
扩展性
react
1 类式写法api少,更容易结合ts
2 可以通过高阶组件来扩展
vue
1 声明式写法,结合ts比较复杂
2 需要通过mixin方式来扩展

vue-router提供了导航钩子:全局前置导航钩子 beforeEach和全局后置导航钩子 afterEach
导航钩子3个参数(to,from,next):

到达这个组件时:

离开这个组件时:beforeRouteLeave:(to,from,next)=》{}
确认离开next();取消离开next(false);

beforeEnter:(to,from,next)=》{},用法与全局守卫一致。只是,将其写进其中一个路由对象中,只在这个路由下起作用。

方法一:
子组件绑定一个事件,通过 this.$emit() 来触发
在子组件中绑定一个事件,并给这个事件定义一个函数

在父组件中定义并绑定 handleChange 事件

方法二:
通过 callback 函数
先在父组件中定义一个callback函数,并把 callback 函数传过去

在子组件中接收,并执行 callback 函数

方法三:
通过 $parent /$children 或 $refs 访问组件实例
这两种都是直接得到组件实例,使用后可以直接调用组件的方法或访问数据。
这种方式的组件通信不能跨级

方法四:
$attrs和$listeners

前端vue框架面试题,v-for中的key啥作用

需要使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点。

前端面试题(十五)

已知高度和宽度的元素:

设置父元素为相对定位relative,给子元素设置绝对定位absoluted,top: 0; right: 0; bottom: 0; left: 0; margin: auto;

设置父元素为相对定位,给子元素设置绝对定位,left: 50%; top: 50%; margin-left: --元素宽度的一半px; margin-top: --元素高度的一半px;

未知高度和宽度的元素:

设置父元素为相对定位,给子元素设置绝对定位,left: 50%; top: 50%; transform: translate(-50%,-50%);

设置父元素为相对定位,给子元素设置绝对定位,left: 50%; top: 50%; transform:translate(-50%,-50%);

组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的 data ,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份 data ,就会造成一个变了全都会变的结果。

for of:

支持 return ,并且是值 of 数组(不能遍历对象)
1. 可以避免所有 for-in 循环的陷阱
2. 不同于 forEach(),可以使用 break, continue 和 return
3. for-of 循环不仅仅支持数组的遍历。同样适用于很多类似数组的对象
4. 它也支持字符串的遍历
5. for-of 并不适用于处理原有的原生对象

for in:

forEach:

assets文件夹里是静态资源;components是放组件;router是定义路由相关的配置;view视图;app.vue是一个应用主组件;main.js是入口文件

在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。

生命周期函数: activated( 组件激活时调用 )、deactivated( 组件停用时调用

常见的使用场景可以分为三类:

当频繁执行条件时,不适合使用 v-if ,用 v-show ;
反之执行条件的次数很少,使用 v-if 即可。

v-if 和 v-for ,不推荐两者一起使用在同一个元素上,虽然也能运行,但是器会报警告;两者一起使用时,v-for比v-if具有更高的优先级,

vue面试题大全

1. vue生命周期都有哪些?

2. 进入页面会执行哪些生命周期函数
beforeCreate、created、beforeMounted、mounted

3. 在哪里可以访问 data
beforeCreate中不可以访问
created中有 el
beforeMounte中有 el
mouted中都有,包括之后的生命周期钩子函数都有

4、 如果加入了keep-alive会增加两个生命周期函数
activated和deactivated
进入页面的时候触发activated,离开页面触发 deactivated
5. 如果加入keep-alive组件,第一次进入页面会触发哪些生命周期
beforeCreate、created、beforeMounted、mounted、activated
6、 如果加入了keep-alive组件后,第二次或第n次进入页面会触发哪些生命周期?
只触发一个生命周期:activated(因为该页面已经被缓存起来了)

1.是什么
vue自带的一个组件,用来缓存组件,提升性能,keep-alive可以在组件切换时,保存其包裹组件的状态,使其不被销毁。
2、参数
include:表示只有匹配的组件才会被缓存;
exclude:表示匹配到的组件不会被缓存;
3、生命周期
有两个生命周期函数,同上
4.使用场景
-列表页面跳转详情页的时候,用户通过点击跳转,那么详情页每次都要去请求数据,如果用户每次点击的都是同一个,那么详情页就没必要去重新请求,直接缓存起来就行了,如果点击的不是同一个再重新发起请求;
-在router-view上使用可以缓存路由组件;

1.相同点
都可以控制元素的显示隐藏
2.区别
v-if通过创建/销毁dom元素来控制元素的显示隐藏,v-show通过css属性的display:none来控制元素的显示隐藏
3.场景
频繁切换使用v-show,会节省性能,反之使用v-if

1、当项目使用keep-alive时,可搭配组件name进行缓存过滤
当我们使用keep-alive缓存组件时,被缓存组件中的mounted函数只会执行一次,第二次进入页面不会重新触发,有两种解决方法,一种是使用activated(),在里面进行mounted中的操作;另一种就是在keep-alive中增加一个过滤,如下所示:

exclude属性就是要忽略匹配到的组件。
2、DOM做递归组件时;
当组件需要自己调用自己的时候

3、使用vue-tools时;
vue-devtools调试工具里显示的组件名称是由vue中组件name决定的

v-for的优先级比v-if的优先级高,这是在源码中规定好的,并且v-for和v-if不可以同时使用,同时使用会很浪费性能,比如明知判断条件是false的情况下,还需要去遍历一下数据,所以通常我们会把v-if放在v-for的外面。

是用来获取更新后的dom内容,并且该方法是异步的

作用是将回调函数延迟到下次dom更新循环之后执行因为vue更新数据是异步的,修改data中的数据,视图不会立刻更新,vue会将你对data的修改放到一个watch队列中,当同一事件循环中的所有数据更新完以后,再进行试图更新,所以会产生延迟。
最常见的使用场景就是,在created中获取dom元素的时候需要使用$nextTick获取

组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的 data ,相当于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份 data ,就会造成一个变了全都会变的结果。

当父组件给子组件传递数据的时候,子组件只允许对数据进行读取,不允许修改数据,因为当子组件修改了父组件传过来的数据时,其他引用父组件数据的组件也会被修改,从而导致报错,然而也不知道是当前组件报错还是父组件报错还是修改父组件信息的子组件的错误;

如果要修改可以通过this.$emit方法派发自定义事件,在父组件中修改;

hash模式和history模式,默认是hash模式
区别如下:
1、表现形式不同,hash使用#表示,history用/表示;
2、hash值不会发送到服务端,history会发送到服务端 ,如果没有匹配到对应的路由,需要配置对应的页面;
3、获取方式不同,hash值可以通过location.path获取,history通过location.pathname获取;
4、hash可以通过window.onhashchange监听hash值的改变 ,history
可以通过onpopstate监听变化;

组建中的template标签会编译为render函数,通过render函数创建出dom元素,然后转化为虚拟dom最终转化为真实dom

1、虚拟dom是一个js对象,用对象属性来描述节点,是一层对真实dom的抽象

2、因为dom的执行速度远不如js执行速度快,因此将真实的dom抽象成js对象,然后通过算法计算出真正需要更新的节点,从而减少了大量的dom操作。
3、将直接操作dom转换成了两个js对象中去比较,找出差异项,做局部更新,提高了执行效率。

未完待续...

vue常见面试题

1.什么是vue的生命周期?

Vue实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载DOM-》渲染、更新-》渲染、卸载等一系列过程,我们称这是Vue的生命周期。

2.vue生命周期的作用是什么?

它的生命周期中有多个事件钩子,让我们在控制整个vue实例的过程时更容易形成好的逻辑。

3.Vue生命周期总共有几个阶段?

它可以总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/销毁后

4.第一次页面加载会触发那几个钩子?

第一次页面加载时会触发beforeCreate,created,beforeMount,mounted

5.DOM渲染在哪个周期中就已经完成?

DOM渲染在mounted中就已经完成了

6.生命周期钩子的一些使用方法:

1.beforecreate:可以在加个loading事件,在加载实例是触发

2.created:初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用

3.mounted:挂载元素,获取到dom节点

4.updated:如果对数据统一处理,在这里写上相应函数

5.beforeDestroy:可以一个确认停止事件的确认框

6.nextTick:更新数据后立即操作dom

7.v-show与v-if的区别

v-show是css切换,v-if是完整的销毁和重新创建
使用频繁切换时用v-show,运行时较少改变时用v-if

V-if=’false’v-if是条件渲染,当false的时候不会渲染

使用v-if的时候,如果值为false,那么页面将不会有这个html标签生成

v-show则是不管值是为true还是false,html元素都会存在,只是css中的display显示或隐藏

v-show 仅仅控制元素的显示方式,将 display 属性在 block 和 none 来回切换;而v-if会控制这个 DOM 节点的存在与否。当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。

8.开发中常用的指令有哪些?

v-model:一般用在表达输入,很轻松的实现表单控件和数据的双向绑定
v-html:更新元素的innerHTML

v-show与v-if:条件渲染,注意二者区别

v-on:click:可以简写为@click,@绑定一个事件。如果事件触发了,就可以指定事件的处理函数

v-for:基于源数据多次渲染元素或模板

v-bind:当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM语法

v-bind:title=”msg”简写:title="msg"

9.绑定class的数组用法

1.对象方法v-bind:class="{’orange’:isRipe, ’green’:isNotRipe}”

2.数组方法v-bind:class=""

3.行内v-bind:style="{color:color,fontSize:fontSize+’px’}”
10.路由跳转方式
1.router-link标签会渲染为标签,咋填template中的跳转都是这种;
2.另一种是是导航,也就是通过js跳转比如router.push(’/home’)

12. computed和watch有什么区别

computed
computed是计算属性,也就是计算值,它更多用于计算值的场景

computed具有缓存性,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时重新调用对应的getter来计算

computed适用于计算比较消耗性能的计算场景

watch

watch更多的是的作用,类似于某些数据的监听回调,用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作

无缓存性,页面重新渲染时值不变化也会执行

小结

当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计为computed

如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化。

13. vue组件的scoped属性的作用

在style标签上添加scoped属性,以表示它的样式作用于当下的模块,很好的实现了样式私有化的目的;
但是也得慎用:样式不易(可)修改,而很多时候,我们是需要对公共组件的样式做微调的;

解决办法:

①:使用混合型的css样式:(混合使用全局跟本地的样式) /* 全局样式 */ /* 本地样式 */

②:深度作用选择器(》》》)如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 》》》 操作符: .a 》》》 .b { /* ... */ }

14. vue是渐进式的框架的理解:( 主张最少,没有多做职责之外的事 )

Vue的核心的功能,是一个视图模板引擎,但这不是说Vue就不能成为一个框架。如下图所示,这里包含了Vue的所有部件,在声明式渲染(视图模板引擎)的基础上,我们可以通过添加组件系统、客户端路由、大规模状态管理来构建一个完整的框架。更重要的是,这些功能相互独立,你可以在核心功能的基础上任意选用其他的部件,不一定要全部整合在一起。可以看到,所说的“渐进式”,其实就是Vue的使用方式,同时也体现了Vue的设计的理念
在我看来,渐进式代表的含义是:主张最少。视图模板引擎

每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。

比如说,Angular,它两个版本都是强主张的,如果你用它,必须接受以下东西:

必须使用它的模块机制- 必须使用它的依赖注入- 必须使用它的特殊形式定义组件(这一点每个视图框架都有,难以避免)

所以Angular是带有比较强的排它性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西集成,这些主张会带来一些困扰。

Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。

渐进式的含义,我的理解是:没有多做职责之外的事。

15.vue.js的两个核心是什么(数据驱动、组件系统。)
数据驱动:Object.defineProperty和存储器属性: getter和setter(所以只兼容IE9及以上版本),可称为基于依赖收集的观测机制,核心是VM,即ViewModel,保证数据和视图的一致性。
16.vue常用修饰符
修饰符分为:一般修饰符,事件修身符,按键、系统
①一般修饰符:

.lazy:v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步

《inputv-model.lazy="msg"》

.number

《inputv-model.number="age"type="number"》
.trim
1.如果要自动过滤用户输入的首尾空白字符《inputv-model.trim=’trim’》
② 事件修饰符
《av-on:click.stop="doThis"》《/a》《!-- 阻止单击事件继续传播 --》

《formv-on:submit.prevent="onSubmit"》《/form》 《!-- 提交事件不再重载页面 --》

《av-on:click.stop.prevent="doThat"》《/a》 《!-- 修饰符可以串联 --》

《formv-on:submit.prevent》《/form》 《!-- 只有修饰符 --》

《divv-on:click.capture="doThis"》...《/div》 《!-- 添加事件监听器时使用事件捕获模式 --》  《!-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 --》

《divv-on:click.self="doThat"》...《/div》 《!-- 只当在 event.target 是当前元素自身时触发处理函数 --》 《!-- 即事件不是从内部元素触发的 --》

《av-on:click.once="doThis"》《/a》 《!-- 点击事件将只会触发一次 --》

③按键修饰符
全部的按键别名:
.enter.tab.delete(捕获“删除”和“退格”键).esc.space.up.down.left.right.ctrl.alt.shift.meta
《inputv-on:keyup.enter="submit"》或者《input@keyup.enter="submit"》
④系统修饰键 (可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。)
.ctrl.alt.shift.meta
《input@keyup.alt.67="clear"》或者《div@click.ctrl="doSomething"》Dosomething《/div》《!-- Ctrl + Click --》
20.Vue 组件中 data 为什么必须是函数
vue组件中data值不能为对象,因为对象是引用类型,组件可能会被多个实例同时引用。
如果data值为对象,将导致多个实例共享一个对象,其中一个组件改变data属性值,其它实例也会受到影响。

前端经典面试题(60道前端面试题包含JS、CSS、React、浏览器等)

防抖

节流

误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。

实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是来源与浏览器或web服务器,浏览器或web服务器限制了url的长度。为了明确这个概念,我们必须再次强调下面几点:

补充补充一个get和post在缓存方面的区别:

可从IIFE、AMD、CMD、CommonJS、UMD、webpack(require.ensure)、ES Module、

vue和react都是采用diff算法来对比新旧虚拟节点,从而更新节点。在vue的diff函数中(建议先了解一下diff算法过程)。在交叉对比中,当新节点跟旧节点 头尾交叉对比 没有结果时,会根据新节点的key去对比旧节点数组中的key,从而找到相应旧节点(这里对应的是一个key =》 index 的map映射)。如果没找到就认为是一个新增节点。而如果没有key,那么就会采用遍历查找的方式去找到对应的旧节点。一种一个map映射,另一种是遍历查找。相比而言。map映射的速度更快。vue部分源码如下:

创建map函数

遍历寻找

在React中, 如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,除此之外的setState调用会同步执行this.state 。所谓“除此之外”,指的是绕过React通过addEventListener直接添加的事件处理函数,还有通过setTimeout/setInterval产生的异步调用。

**原因:**在React的setState函数实现中,会根据一个变量isBatchingUpdates判断是直接更新this.state还是放到队列中回头再说,而isBatchingUpdates默认是false,也就表示setState会同步更新this.state,但是, 有一个函数batchedUpdates,这个函数会把isBatchingUpdates修改为true,而当React在调用事件处理函数之前就会调用这个batchedUpdates,造成的后果,就是由React控制的事件处理过程setState不会同步更新this.state

虚拟dom相当于在js和真实dom中间加了一个缓存,利用dom diff算法避免了没有必要的dom操作,从而提高性能。

具体实现步骤如下:

用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中

当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异

把2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了。

结构:display:none: 会让元素完全从渲染树中消失,渲染的时候不占据任何空间, 不能点击, visibility: hidden:不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,不能点击 opacity: 0: 不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,可以点击

继承:display: none:是非继承属性,子孙节点消失由于元素从渲染树消失造成,通过修改子孙节点属性无法显示。visibility: hidden:是继承属性,子孙节点消失由于继承了hidden,通过设置visibility: visible;可以让子孙节点显式。

性能:displaynone : 修改元素会造成文档回流,读屏器不会读取display: none元素内容,性能消耗较大 visibility:hidden: 修改元素只会造成本元素的重绘,性能消耗较少读屏器读取visibility: hidden元素内容 opacity: 0 :修改元素会造成重绘,性能消耗较少

联系:它们都能让元素不可见

常用的一般为三种 .clearfix , clear:both , overflow:hidden ;

比较好是 .clearfix ,伪元素万金油版本,后两者有局限性.

clear:both :若是用在同一个容器内相邻元素上,那是贼好的,有时候在容器外就有些问题了, 比如相邻容器的包裹层元素塌陷

overflow:hidden :这种若是用在同个容器内,可以形成 BFC 避免浮动造成的元素塌陷

概念:将多个小图片拼接到一个图片中。通过 background-position 和元素尺寸调节需要显示的背景图案。

优点:

缺点:

block 元素特点:

1.处于常规流中时,如果 width 没有设置,会自动填充满父容器 2.可以应用 margin/padding 3.在没有设置高度的情况下会扩展高度以包含常规流中的子元素 4.处于常规流中时布局时在前后元素位置之间(独占一个水平空间) 5.忽略 vertical-align

inline 元素特点

1.水平方向上根据 direction 依次布局

2.不会在元素前后进行换行

3.受 white-space 控制

4. margin/padding 在竖直方向上无效,水平方向上有效

5. width/height 属性对非替换行内元素无效,宽度由元素内容决定

6.非替换行内元素的行框高由 line-height 确定,替换行内元素的行框高由 height , margin , padding , border 决定 7.浮动或绝对定位时会转换为 block 8. vertical-align 属性生效

GIF :

JPEG

PNG

七种数据类型

(ES6之前)其中5种为基本类型: string , number , boolean , null , undefined ,

ES6出来的 Symbol 也是原始数据类型 ,表示独一无二的值

Object 为引用类型(范围挺大),也包括数组、函数,

输出结果是:

工厂模式

简单的工厂模式可以理解为解决多个相似的问题;

单例模式

只能被实例化(构造函数给实例添加属性与方法)一次

沙箱模式

将一些函数放到自执行函数里面,但要用闭包暴露接口,用变量接收暴露的接口,再调用里面的值,否则无法使用里面的值

1.字面量

2.Object构造函数创建

3.使用工厂模式创建对象

4.使用构造函数创建对象

HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件onclick、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。

什么是事件流:事件流描述的是从页面中接收事件的顺序,DOM2级事件流包括下面几个阶段。

addEventListener addEventListener 是DOM2 级事件新增的指定事件处理程序的操作,这个方法接收3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。最后这个布尔值参数如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。

IE只支持事件冒泡

获取一个对象的原型,在chrome中可以通过__proto__的形式,或者在ES6中可以通过Object.getPrototypeOf的形式。

那么Function.proto是什么么?也就是说Function由什么对象继承而来,我们来做如下判别。

我们发现Function的原型也是Function。

我们用图可以来明确这个关系:

这里来举个栗子,以 Object 为例,我们常用的 Object 便是一个构造函数,因此我们可以通过它构建实例。

则此时, 实例为instance , 构造函数为Object ,我们知道,构造函数拥有一个 prototype 的属性指向原型,因此原型为:

这里我们可以来看出三者的关系:

在 JS 中,继承通常指的便是 原型链继承 ,也就是通过指定原型,并可以通过原型链继承原型上的属性或者方法。

在函数式编程中,函数是一等公民。那么函数柯里化是怎样的呢?

函数柯里化指的是将能够接收多个参数的函数转化为接收单一参数的函数,并且返回接收余下参数且返回结果的新函数的技术。

函数柯里化的主要作用和特点就是参数复用、提前返回和延迟执行。

在一个函数中,首先填充几个参数,然后再返回一个新的函数的技术,称为函数的柯里化。通常可用于在不侵入函数的前提下,为函数 预置通用参数 ,供多次重复调用。

call 和 apply 都是为了解决改变 this 的指向。作用都是相同的,只是传参的方式不同。

除了第一个参数外, call 可以接收一个参数列表, apply 只接受一个参数数组。

bind 和其他两个方法作用也是一致的,只是该方法会返回一个函数。并且我们可以通过 bind 实现柯里化。

如何实现一个 bind 函数

对于实现以下几个函数,可以从几个方面思考

如何实现一个call函数

如何实现一个apply函数

箭头函数其实是没有 this 的,这个函数中的 this 只取决于他外面的第一个不是箭头函数的函数的 this 。在这个例子中,因为调用 a 符合前面代码中的第一个情况,所以 this 是 window 。并且 this 一旦绑定了上下文,就不会被任何代码改变。

关于 let 的是否存在变量提升,我们何以用下面的例子来验证:

let 变量如果不存在变量提升, console.log(name) 就会输出 ConardLi ,结果却抛出了 ReferenceError ,那么这很好的说明了, let 也存在变量提升,但是它存在一个“暂时死区”,在变量未初始化或赋值前不允许访问。

变量的赋值可以分为三个阶段:

关于 let 、 var 和 function :

依次输出:undefined -》 10 -》 20

答案: D

colorChange 方法是静态的。静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。由于 freddie 是一个子级对象,函数不会传递,所以在 freddie 实例上不存在 freddie 方法:抛出 TypeError 。

1.使用第一次push,obj对象的push方法设置 obj 获取为 undefined

undefined {n:2}

首先,a和b同时引用了{n:2}对象,接着执行到a.x = a = {n:2}语句,尽管赋值是从右到左的没错,但是.的优先级比=要高,所以这里首先执行a.x,相当于为a(或者b)所指向的{n:1}对象新增了一个属性x,即此时对象将变为{n:1;x:undefined}。之后按正常情况,从右到左进行赋值,此时执行a ={n:2}的时候,a的引用改变,指向了新对象{n:2},而b依然指向的是旧对象。之后执行a.x = {n:2}的时候,并不会重新解析一遍a,而是沿用最初解析a.x时候的a,也即旧对象,故此时旧对象的x的值为{n:2},旧对象为 {n:1;x:{n:2}},它被b引用着。后面输出a.x的时候,又要解析a了,此时的a是指向新对象的a,而这个新对象是没有x属性的,故访问时输出undefined;而访问b.x的时候,将输出旧对象的x的值,即{n:2}。

在比较相等性,原始类型通过它们的值进行比较,而对象通过它们的引用进行比较。 JavaScript 检查对象是否具有对内存中相同位置的引用。

我们作为参数传递的对象和我们用于检查相等性的对象在内存中位于不同位置,所以它们的引用是不同的。

这就是为什么 { age: 18 } === { age: 18 } 和 { age: 18 } == { age: 18 } 返回 false 的原因。

所有对象键(不包括 Symbols )都会被存储为字符串,即使你没有给定字符串类型的键。这就是为什么 obj.hasOwnProperty(’1’) 也返回 true 。

上面的说法不适用于 Set 。在我们的 Set 中没有 “1” : set.has(’1’) 返回 false 。它有数字类型 1 , set.has(1) 返回 true 。

这题考察的是对象的键名的转换。

catch 块接收参数 x 。当我们传递参数时,这与变量的 x 不同。这个变量 x 是属于 catch 作用域的。

之后,我们将这个块级作用域的变量设置为 1 ,并设置变量 y 的值。现在,我们打印块级作用域的变量 x ,它等于 1 。

在 catch 块之外, x 仍然是 undefined ,而 y 是 2 。当我们想在 catch 块之外的 console.log(x) 时,它返回 undefined ,而 y 返回 2 。

你遇到的前端面试题都有什么

大家好,我是王我。

随着春节的结束,各个行业也普遍开始了上班的节奏, 不过本人17号才上班。为什么?因为长得帅的都上班比较晚。 当然,每到新年结束,又迎来了一批招聘者与面试者,我来说说作为一年工作经验应该知道的面试题。

HTML篇

1.doctype是什么?有哪些类型?

2.input有哪些新类型?简要说明其8用法。

3.HTML5有哪些新特性,移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?

4.bootstrap响应式的原理是什么?

5.多移动终端页面适配是如何实现的?

CSS篇

1.如何实现两列布局,左边自适应,右边固定宽度?

2.用CSS画一个三角形

3.CSS实现字体大写

4.display有哪些常用的属性值?分别是什么意思?

5.position为absolute,relative,fixed的定点位置

6.用三种方法清除浮动

7.请介绍一下margin塌陷问题

js篇

1.什么是事件冒泡和捕获?如何阻止事件冒泡?(分别用原生和jquery实现)

2.js创建对象,至少使用三种方法

3.简述一下事件穿透以及解决办法

4.用三种方式判断变量类型是否是数组

5.如何实现对象的拷贝?

6.什么是闭包?闭包的优缺点。

7.简述一下ajax请求的过程。

8.简述一下new一个人构造函数的人过程。

9.为什么会有跨域?是怎么解决跨域问题的?简述一下原理。

10.js原始数据类型有哪些?

11.学一个函数,判断一个变量是否是字符串

12.typeof有哪些结果?

13.剪头函数和普通函数有什么区别?

14.请用三种方法实现数组去重

15.href和src有什么区别?

jquery篇

1.attr()和prop()有什么区别?

2.on和bind有什么区别?js动态添加的dom元素是通过on还是bind?

3.touch和click有什么区别?

4.window.onload和jquery的ready有什么区别?

vue篇

1.简述一下vue的生命周期及其特点

2.vue双向绑定的原理是什么?

3.vue的特点有哪些?和jquery有什么区别?

4.父子组件之间传递数据的方法

5.子组件如何共享数据?

6.一般有什么工具进行数据交互?

7.webpack的原理是什么?

8.简述一下$nextTick的用法

浏览器篇

1.cookie、sessionStorage、localStora

1.前端框架类问题,问你会不会用vue react啊

2.语言类,问你一些JavaScript语言的问题

3.项目经验,让你讲讲做过的项目,遇到的问题和解决之道

文章分享结束,中国银行前端开发vue面试题和有关vue的常见面试题(上)的答案你都知道了吗?欢迎再次光临本站哦!

中国银行前端开发vue面试题(有关vue的常见面试题(上))

本文编辑:admin

本文相关文章:


中国银行前端开发vue面试题(vue面试题大全)

中国银行前端开发vue面试题(vue面试题大全)

大家好,今天小编来为大家解答以下的问题,关于中国银行前端开发vue面试题,vue面试题大全这个很多人还不知道,现在让我们一起来看看吧!本文目录vue面试题大全前端面试题(十五)vue面试题大全 1. vue生命周期都有哪些? 2.

2026年5月13日 20:03

更多文章:


广告关键词优化指导策略:新站如何通过关键词优化提升排名

广告关键词优化指导策略:新站如何通过关键词优化提升排名

你有没有想过,新站怎么才能快速在搜索结果里冒头?说实话,关键词优化这事儿,说复杂也复杂,说简单也简单。今天咱们就来聊聊,新站如何通过关键词优化提升排名,希望能帮到你。 一、为啥新站要重视关键词优化? 新站就像刚出生的宝宝,啥也不懂,这时候就

2026年6月5日 01:18

免费的软件网站(免费软件下载网站有哪些)

免费的软件网站(免费软件下载网站有哪些)

各位老铁们,大家好,今天由我来为大家分享免费的软件网站,以及免费软件下载网站有哪些的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录免费软件下载网站有

2026年4月15日 13:52

有经验的企业网站建设公司如何选择:有经验的企业建设网站如何选择

有经验的企业网站建设公司如何选择:有经验的企业建设网站如何选择

你有没有想过,为什么有的企业网站看起来就特别专业,而有的却让人一看就觉得不靠谱?其实啊,这跟找谁建设网站有很大关系。今天我就来聊聊,有经验的企业建设网站到底应该怎么选。 一、看公司案例和口碑 选网站建设公司,案例和口碑是关键。你懂的,就像买

2026年6月15日 20:45

seo知多少:新站如何提升搜索引擎排名

seo知多少:新站如何提升搜索引擎排名

嘿,新站主们,是不是经常琢磨着怎么让自己的网站在搜索引擎里冒个泡?说实话,新站想要排名,确实得费点心思,但也不是啥难事儿。今天咱们就来聊聊,新站怎么才能在搜索引擎里混出个名堂来。 小白也能懂的SEO:新站如何提升搜索引擎排名? 1. 选对关

2026年5月22日 00:15

注册公司代理机构(台湾注册公司代办机构哪家好)

注册公司代理机构(台湾注册公司代办机构哪家好)

“注册公司代理机构”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看注册公司代理机构(台湾注册公司代办机构哪家好)!本文目录台湾注册公司代办机构哪家好代理注册公司哪家靠谱成立公司代办机构在上海注册一个公司找代理机构有什么好处吗

2026年5月10日 00:02

广东省企业信息平台(广州市建设领域管理应用信息平台怎样注销企业管理员的账号)

广东省企业信息平台(广州市建设领域管理应用信息平台怎样注销企业管理员的账号)

大家好,广东省企业信息平台相信很多的网友都不是很明白,包括广州市建设领域管理应用信息平台怎样注销企业管理员的账号也是一样,不过没有关系,接下来就来为大家分享关于广东省企业信息平台和广州市建设领域管理应用信息平台怎样注销企业管理员的账号的一些

2026年4月30日 01:56

网络规划的主要步骤(网络营销规划的一般过程)

网络规划的主要步骤(网络营销规划的一般过程)

本篇文章给大家谈谈网络规划的主要步骤,以及网络营销规划的一般过程对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录网络营销规划的一般过程ipv

2026年4月25日 02:56

安庆商城网站建设地址

安庆商城网站建设地址

安庆商城网站建设地址,这个话题其实挺有意思的。你有没有想过,为啥这么多人在找这个信息?说白了,就是想在安庆这儿做电商,但不知道该找谁建网站。别急,我这就给你好好说道说道。 一、为什么找安庆商城网站建设地址很重要? 简单来说,找对服务商,网站

2026年6月25日 13:39

舆情报告怎么写(2021舆情报告怎么写)

舆情报告怎么写(2021舆情报告怎么写)

大家好,舆情报告怎么写相信很多的网友都不是很明白,包括2021舆情报告怎么写也是一样,不过没有关系,接下来就来为大家分享关于舆情报告怎么写和2021舆情报告怎么写的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录2

2026年5月5日 22:26

新站SEO被查怎么恢复排名:seo搜索被查后新站如何快速恢复排名

新站SEO被查怎么恢复排名:seo搜索被查后新站如何快速恢复排名

新站SEO被查后怎么办? 网站被查,首先别慌。搜索引擎查站,通常是因为网站内容有问题,比如重复内容、关键词堆砌、黑帽SEO等。新站尤其要注意,因为权重低,一旦被查,恢复起来更难。但别担心,咱们有办法。 1. 确认被查原因 被查后,先看看是什

2026年6月6日 13:03

新疆旅游最佳路线是什么?4月份去新疆游玩,有哪些景点可以推荐一下

新疆旅游最佳路线是什么?4月份去新疆游玩,有哪些景点可以推荐一下

各位老铁们好,相信很多人对新疆旅游都不是特别的了解,因此呢,今天就来为大家分享下关于新疆旅游以及新疆旅游最佳路线是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录新疆旅游最佳路线是什么4月份去新疆游玩,有哪些

2026年4月21日 20:38

电脑装什么软件管家好?电脑用什么管家软件好

电脑装什么软件管家好?电脑用什么管家软件好

大家好,软件管家相信很多的网友都不是很明白,包括电脑装什么软件管家好也是一样,不过没有关系,接下来就来为大家分享关于软件管家和电脑装什么软件管家好的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录电脑装什么软件管家

2026年5月14日 12:00

手表网站推荐(网上买手表在哪买最好)

手表网站推荐(网上买手表在哪买最好)

大家好,手表网站推荐相信很多的网友都不是很明白,包括网上买手表在哪买最好也是一样,不过没有关系,接下来就来为大家分享关于手表网站推荐和网上买手表在哪买最好的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录网上买手表

2026年5月4日 18:22

数字江门网络建设有限公司(数字江门网络建设有限公司怎么样)

数字江门网络建设有限公司(数字江门网络建设有限公司怎么样)

本篇文章给大家谈谈数字江门网络建设有限公司,以及数字江门网络建设有限公司怎么样对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录数字江门网络建

2026年4月21日 15:01

凤冈网站优化,如何有效提升本地排名?

凤冈网站优化,如何有效提升本地排名?

你有没有想过,为什么有的凤冈本地网站在百度上排名那么高,而你的网站却淹没在茫茫大海里?别急,今天咱们就来聊聊,凤冈本地网站排名提升方法,希望能帮到你。 凤冈本地网站排名的重要性 简单来说,凤冈本地网站排名越高,就越容易被潜在客户看到。这就像

2026年5月26日 20:21

原平网站建设实力分析:企业网站如何打造?

原平网站建设实力分析:企业网站如何打造?

你想知道原平的企业网站建设到底怎么样吗?其实啊,这事儿说复杂也复杂,说简单也简单。关键得看你找对人了没。我常用的方法就是先找几家靠谱的公司聊聊,再自己做个判断。下面我就跟你唠唠原平网站建设的一些事儿。 一、原平网站建设的市场情况 原平的网站

2026年6月25日 16:27

湛江宁津网站建设(宁津的基础建设)

湛江宁津网站建设(宁津的基础建设)

大家好,湛江宁津网站建设相信很多的网友都不是很明白,包括宁津的基础建设也是一样,不过没有关系,接下来就来为大家分享关于湛江宁津网站建设和宁津的基础建设的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录宁津的基础建设

2026年5月2日 04:38

新站SEO优化容易被忽略的缺点:下列属于SEO缺点的是哪些常见问题

新站SEO优化容易被忽略的缺点:下列属于SEO缺点的是哪些常见问题

SEO优化对于新站来说,确实是个挺头疼的事儿。说实话,不少新手站长一开始都会踩些坑,导致网站排名迟迟上不去。那么,到底有哪些常见的SEO缺点呢?今天咱们就来好好聊聊这个话题。 新站SEO常见误区有哪些? 新站SEO优化过程中,常见的误区主要

2026年5月30日 10:54

网站优化推广是什么(seo优化推广是什么具体怎么操作呢)

网站优化推广是什么(seo优化推广是什么具体怎么操作呢)

这篇文章给大家聊聊关于网站优化推广是什么,以及seo优化推广是什么具体怎么操作呢对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录seo优化推广是什么具体怎么操作呢SEO推广是什么意思什么是优化推广好处有哪些网站推广优化是什么什

2026年4月15日 08:19

厦门网站建设模版如何选择

厦门网站建设模版如何选择

你有没有想过,为什么有的人网站看起来那么专业,有的人却像DIY的?其实秘密就在于网站建设模版的选择。今天就来聊聊,厦门网站建设模版怎么选,才能让你的网站既好看又好用。 1. 明确你的需求 先问问自己: 网站是做什么的?(企业官网、电商、博客

2026年6月13日 21:18

近期文章

本站热文

至强cpu参数(e52696v3处理器参数)
2024-04-28 15:30:07 浏览:455
标签列表

热门搜索