101.用函数递归实现计算斐波那契数列第n位数据
function feibo(n){
if(n<= 2) {
return 1
}
return feibo(n-2) + feibo(n-1)
}
102.用函数的递归实现计算给定数值n的阶乘
fucntion jieCheng(n){
if(n<=1) {
return 1
}
return n*jieCheng(n-1)
}
103.JS代码实现一个账号、邮箱的验证
var reg = /^[1-9][0-9]{5,9}$/
var reg2 = /^[0-9a-zA-Z]{6,16}(@qq|@163)(\.com|\.cn|\.com\.cn)$/
104.简述什么是面向对象,面向对象有哪些优缺点
面向对象是一种编程思想,重点关注的是参与解决问题的对象以及对象的特征行为,通过对象的行为的互相调用完成最终问题的解决
优点:开发的软件扩展性好
缺点:开发的软件稳定性较差,需要配合相关的技术进行完善
105. 简述什么是面向过程,面向过程有什么优缺点
面向过程是一种编程思想,重点关注的的是解决问题的步骤和处理过程,代码中最直观的实现方式之一就是函数式编程,将操作步骤定义成函数,函数之间的相互调用就是执行过程
优点:开发的软件稳定性非常高
缺点:开发的软件扩展性较差,可以配合相关的开发模式来进行完善
106.简述call()和apply()有什么区别
call()和apply()都是用来改变函数的调用对象、调用过程中改变this指向
call()和apply()的区别在于传递参数的形式上,call()按照数据序列进行参数传递,apply()通过数组的方式进行参数传递
107.什么是数组深浅拷贝
数组的深浅拷贝本质上就是数组的复制,深拷贝直接复制拷贝数组所有的数据,并生成一个新的数组;浅拷贝就是拷贝数组在堆内存中的地址,不会生成新的数组,本质上就是多个变量指向相同的数组(引用赋值)
108.简述什么是DOM事件流,事件流的三个阶段分别是什么
DOM事件流就是一个完整的事件处理的过程,主要区分为三个不同的阶段:事件捕获、目标事件触发、事件冒泡
109.什么是事件委托,简述一个事件委托的基本实现步骤
事件委托就是将触发的事件委托给目标元素的父元素进行触发
首先要确认触发的目标事件,然后给目标元素的父元素委托目标事件的触发操作,当目标父元素触发事件时,检查目标父元素所有子元素,触发事件元素,通过标签名称或者标签属性匹配目标子元素,执行相关业务代码,最后触发事件元素,若没有匹配到目标子元素,不执行
110.面向对象语法中,获取原型prototype的方式有哪些
类型.prototype 对象._proto_