前端的零碎面试题

1.什么是事件委托?为什么这样做?

答:它还有一个名字叫事件代理,事件委托就是利用事件冒泡将自身要执行的事件委托给父级元素执行

为什么这样做?通过事件委托可以减少事件处理程序数量,能减少与dom的交互次数,提高性能;

2.js数据类型?

答:JS的数据类型有8种

ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null。

ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。

谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。

JS数据类型:Object 中包含了哪几种类型?其中包含了Date、function、Array等(这三种比较常用)

3.如果Promise没有all方法的话,你怎么实现all。

 

 

4.数组去重除了set外,还可以怎么做?

答:

1.filter()和indexOf()实现去重

 

2.reduce()和includes()实现去重

 

3.双重for循环 + splice() 或 双重for循环 +  push()      (ES5的方法)

 

5.Axios的原理,基于什么实现的。

答:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

axios还是属于 XMLHttpRequest, 因此需要实现一个ajax;还需要一个promise对象来对结果进行处理。

6.Axios二次分装的目的?

答:二次封装axios,方便我们后续项目的使用。

api统一管理,不管接口有多少,所有的接口都可以非常清晰,容易维护.通常我们的项目会越做越大,页面也会越来越多,如果页面非常的少,直接用axios也没有什么大的影响,那页面组件多了起来,上百个接口呢,这个时候后端改了接口,多加了一个参数什么的呢?那就只有找到那个页面,进去修改.整个过程很繁琐不易于项目的维护和迭代.

7.说说constructor()?

答: constructor的作用是可以知道实例对象的构造函数是谁,constructor属性表示原型对象与构造函数之间的关联关系,如果修改了原型对象,一般会同时修改constructor属性,防止引用的时候出错。

8.class与function定义类的区别?

答:

1.关于构造器constructor:在function定义的构造函数中,其prototype.constructor属性指向构造器自身,在class定义的类中,constructor其实也相当于定义在prototype属性上

2.重复定义:function会覆盖之前定义的方法;class会报错

3.原型或者类中方法的枚举:class中所有方法不可枚举

4.class没有变量提升,function有

5.class定义的类没有私有方法和私有属性

9.自己实现发布订阅者模式 如何实现?

答:

1. 创建一个对象

2. 在该对象上创建一个缓存列表(调度中心)

3. on 方法用来把函数 fn 都加到缓存列表中(订阅者注册事件到调度中心)

4. emit 方法取到 arguments 里第一个当做 event,根据 event 值去执行对应缓存列表中的函数(发布者发布事件到调度中心,调度中心处理代码)

5. off 方法可以根据 event 值取消订阅(取消订阅)

6. once 方法只监听一次,调用完毕后删除缓存函数(订阅一次)

10.如何移除订阅发布者模式

答:实现一个off方法根据event值取消订阅,从订阅列表中移除即可。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值