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(结束最顶层)的指向,就是所谓的原型链

浙公网安备 33010602011771号