6、js的数据类型
简单数据类型:Number、String、Boolean、 undefined、object、Null
引用类型:Object Array Function
7、面向对象的特征:封装、继承、抽象、多态
8、vue的实现原理
vue是一个典型的MVVM框架,模型Model是js对象,修改它则视图VIEW自动更新。
vue实现双向数据绑定,需要三大模块:
Observer:能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者
Compile:对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定想要的更新函数
Watcher:作为链接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图。
9、vue的生命周期
beforeCreate:组件实例刚被创建
created:组件实例创建完成,属性已绑定,但是DOM还未生成
beforeMount:模板编译
mounted:挂载
beforeUpdate:
updated:更新
beforeDestroy:实例销毁前
destroyed:销毁
10、防抖 :
(实例:https://www.cnblogs.com/momo798/p/9177767.html)
在某段时间内,不管你触发了多少次回调,我都只认最后一次。
a:如果在200ms内没有再次触发滚动事件,那么就执行函数
b:如果在200ms内再次触发滚动事件,那么当前的计时取消,重新开始计时
//防抖例子
functiondebounce(fn,wait){vartimer=null;returnfunction(){varcontext=this,args=arguments;// 如果此时存在定时器的话,则取消之前的定时器重新记时if(timer){clearTimeout(timer);timer=null;}// 设置定时器,使事件间隔指定事件后执行timer=setTimeout(()=>{fn.apply(context,args);},wait);};}
节流:在某段时间内,不管你触发了多少次回调,我都只认第一次,并在计时结束时给予响应。
// 函数节流的实现;functionthrottle(fn,delay){varpreTime=Date.now();returnfunction(){varcontext=this,args=arguments,nowTime=Date.now();// 如果两次时间间隔超过了指定时间,则执行函数。if(nowTime-preTime>=delay){preTime=Date.now();returnfn.apply(context,args);}};}