JS面试题一

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使用起来更方便

 

posted @ 2022-08-30 21:06  啊呀阿鱼呀  阅读(33)  评论(0)    收藏  举报