vue面试题

1.路由的跳转方式

router-link (声明式路由)

router.push(编程式路由)

this.$router.push() (函数里面调用)

 this.$router.go(n) ()

this.$router.replace() 

 

2.v-for和v-if

当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中

所以,不推荐v-if和v-for同时使用

 

3.v-if和v-show

v-if和v-show是用来做判断显示和隐藏

v-if判断控制某些元素是否存在

v-show用来判断元素的显示隐藏

 

4.vue组件之间的通信

子父组件传值 props、$emit

父子、兄弟、跨级传值   $emit、$on

vuex 和localstorage  全局

 

5.数据类型

基本数据类型:字符串   数字  布尔   空  未定义

引用数据类型:对象  数组  函数

 

6.继承

(1)将子类.protoype=new 父级  重写了子类的原型

(2)再将子级从新指向自己

 

7.foEach和map的区别

foEach是在原数组上进行操作

map 是操作完返回给一个新数组

 

8.跨域问题

因为不符合同源策略

动态创建script标签,在标签设置请求地址 和请求回来的数据

 

9.双向绑定

1 observer用来实现对每个vue中的data中定义的属性循环用Object.defineProperty()实现数据劫持,以便利用其中的setter和getter,然后通知订阅者,订阅者会触发它的update方法,对视图进行更新

 

 

通过object.defineProperty方法来进行数据劫持以及发布者-订阅模式

需要一个监听器Observer来监听属性的变化,

得知属性发生变化之后我们需要Watcher订阅者来更新视图

还需要一个complie指令解析器,用于解析我们元素的指令与初始化视图

Observer监听器:用来监听属性发生的变化通知订阅者

Watcher订阅者:收到属性的变化,然后更新视图

Complie解析器:解析指令。初始化模板,绑定订阅者

数组 使用数组的原生的方法进行数据拦截

 

10.原型和原型链

每个函数都有一个prototype 属性   没个对象都会从原型上继承属性

每个对象都具有_proto_这个属性指向对象原型

每个原型都会有constructor 属性  指向关联的构造函数

原型链:通过构造函数创建的对象 => 函数原型 => Object.prototype => object(结束最顶层)的指向,就是所谓的原型链

posted @ 2021-03-30 22:57    阅读(46)  评论(0)    收藏  举报