撩课-Web大前台每天5道面试题-Day19

作者 : 开心源码 本文共2158个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共238人阅读

1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别能否清楚考察点2:能否知道如何判断一个变量是什么类型的考察点3:递归算法的设计// 方法一:Object.prototype.clone = function() {var o = this.constructor === Array ? [] : {};for (var e in this) {o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];}return o;}//方法二:/*** 克隆一个对象* @param Obj* @returns*/function clone(Obj) {var buf;if (Obj instanceof Array) {buf = []; //创立一个空的数组var i = Obj.length;while (i--) {buf[i] = clone(Obj[i]);}return buf;} else if (Obj instanceof Object) {buf = {}; //创立一个空对象for (var k in Obj) { //为这个对象增加新的属性buf[k] = clone(Obj[k]);}return buf;} else { //普通变量直接赋值return Obj;}}

2.下面这个ul,如何点击每一列的时候alert其index?(闭包)

题目: <ul id=”test”> <li>这是第一条</li> <li>这是第二条</li> <li>这是第三条</li> </ul>// 方法一:var lis=document.getElementById('test').getElementsByTagName('li');for(var i=0;i<3;i++){lis[i].index=i;lis[i].onclick=function(){alert(this.index);};}//方法二:var lis=document.getElementById('test').getElementsByTagName('li');for(var i=0;i<3;i++){lis[i].index=i;lis[i].onclick=(function(a){return function() {alert(a);}})(i);}

3.对于MVVM的了解?

MVVM 是 Model-View-ViewModel 的缩写。Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。View 代表UI 组件,它负责将数据模型转化成UI 展示出来。ViewModel 监听模型数据的改变和控制视图行为、解决客户交互,简单了解就是一个同步View 和 Model的对象,连接Model和View。在MVVM架构下,View 和 Model 之间并没有直接的联络,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因而View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因而开发者只要关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

4.什么是vue生命周期?

Vue 实例从创立到销毁的过程,就是生命周期。从开始创立、初始化数据、编译模板、挂载Dom→渲染、升级→渲染、销毁等一系列过程,称之为 Vue 的生命周期。

5.Vue的生命周期?

beforeCreate(创立前) 在数据观测和初始化事件还未开始created(创立后) 完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来beforeMount(载入前) 在挂载开始之前被调用,相关的render函数初次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。mounted(载入后) 在el 被新创立的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页面中。此过程中进行ajax交互。beforeUpdate(升级前) 在数据升级之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。updated(升级后) 在因为数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经升级,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,由于这可能会导致升级无限循环。该钩子在服务器端渲染期间不被调用。beforeDestroy(销毁前) 在实例销毁之前调用。实例依然完全可用。destroyed(销毁后) 在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。如下图所示:

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 撩课-Web大前台每天5道面试题-Day19

发表回复