一:主要技术栈是Vue是吧,说说双向绑定原理
Vue 双向绑定,使用数据劫持和发布订阅模式实现。 Vue2.0主要通过object.defineproperty 属性,重写data的set和get函数来实现的。 而Vue3.0中采用proxy来实现数据劫持
二:keep-alive的理解
keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 ,有以下特性: 1、一般结合路由和动态组件一起使用,用于缓存组件。 2、对应两个钩子函数 activated 和 deactivated ,当组件被激活时,触发钩子函数 activated, 当组件被移除时,触发钩子函数 deactivated。
三:组件中为什么data是一个函数
因为组件是需要被复用的,所以必须是一个函数,如果是一个对象,作用域没有分开,子组件 的data属性值会相互影响。
四:为什么new Vue里data可以是一个对象?
因为JS里的对象是引用关系,而new Vue是不会被复用的,所以不存在引用对象的问题。
五:map和forEach的区别
相同点:都是循环遍历数组中的每一项,只能遍历数组
不同:map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值,map()方法不会改变原始数组,map()方法不会对空数组进行检测. forEach()方法用于调用数组的每个元素,将元素传给回调函数(forEach()没有return,返回undefined,forEach对于空数组是不会调用回调函数的)
六:原型和原型链
原型:把所有的对象共用的属性全部放在堆内存的一个对象中(共用属性组成的对象),然后让每一个对象的__proto__存储这个(共用属性组成的对象)的地址。而这个共用属性就是原型。原型出现的目的就是 为了减少不必要的内存消耗。
原型链:而原型链就是对象通过__proto__向当前实例所属类的原型上查找属性或方法的机制,如果找到Object的原型上还是没有找到想要的属性或者是方法则查找结束,最终会返回undefined,终点是null。