1、所有对象都有原型吗?
并不是所有对象都有原型;比如使用Object.create()创建一个对象,我们传递一个参数,那么创建的对象的原型则会指向传递的那个对象;而不传参数,也就是创建一个空对象,那么这个对象的prototype则为空。
2、事件传播的三个阶段是什么?
事件传播的三个阶段有捕获,目标阶段以及冒泡阶段;
第一阶段:从最外层一步一步向里触发,直到到达目标元素,就叫做捕获阶段,capture
第二阶段:目标节点触发事件,称为目标阶段,target
第三阶段:从目标节点一步一步向上链,直到最外层,称为冒泡阶段,bubbling
3、构造函数与普通函数的区别?
- 构造函数没有return,但是它会隐式返回一个对象
- 构造函数的调用必须使用new关键字
- 普通函数的this指向window,而构造函数的this指向返回的实例对象
- 构造函数的属性要用“this.”声明
4、手写一个递归函数
function fn(n){ if(n==1) return n; else return fn(n-1) + fn(n-2); }
5、解释call与apply的用法与区别
call与apply都是用于改变this指向的函数,两个函数都可以自调用,但是call传参数是一个一个传,而apply需要传一个数组,里面包含的则是参数;所以从使用便利方面来说call使用起来更方便
标签:面试题,return,对象,JS,call,阶段,apply,构造函数 From: https://www.cnblogs.com/yule-i7/p/16634984.html