木子卜—木子卜资源网

前端面试题

1.JS是一门面向对象的语言,面向对象语言的三大特征

封装、继承、多态

2.如何理解JS中封装、继承这两个特点

封装指的是隐藏逻辑实现过程,只对外暴露属性和方法,使用者只需要知道如何使用即可,而不需要关心内部如何实现的,目的在于简化实现过程,做到多处复用,提高开发效率,当需要维护的时候,业务逻辑和工具功能是分开的,降低迭代成本。
继承指的是建立一个对象与另一个对象之间的父子关系,使得子对象可以拥有父级对象的属性和方法。继承的目的在于实现功能共享,通过“借用”父对象的特性,从而避免重复写功能模块,避免多余内存空间的占用

3.JS中函数继承主要继承的是什么?可以继承函数体吗

JS函数的继承主要继承的是函数名,没办法实现函数体继承

4.声明一个函数fn,对其使用typeof,结果返回什么?然后我给fn添加一个属性,请问会报错吗

结果返回是function字符串。添加属性不会报错,因为在js中,函数并不是真正的函数,function本身是一个object对象,而对象是可以添加属性和方法的,所以不会报错

5.定义一个字符串,对这个字符串使用typeof,结果返回什么?

既然返回结果是string,而属性和方法是对象才有的,那为什么会在我定义的字符串上可以使用split,join(),length等方法和属性字符串形式的string。在JavaScript中,全局环境存在在简单数据类型的对象,String对象就是其中一个,所有的字符串都是这个对象的实例,当我们对字符串使用方法和属性时,其实字符串本身并没有对应的方法,这个时候,JavaScript会沿着作用域链往上寻找,最终在对象String上找到了对应的方法和属性,而这个过程对于开发者是无感的,所以看上去像是调用了字符串本身的方法。

6.promise能实现异步的原理是什么?我new一个promise,然后对这个promise实例使用typeof,结果是什么?

promise实例接收的参数是一个函数,函数接收两个参数一个resolve,一个reject,为什么resolve后可以实现继续执行后续代码
promise对象代表了一个异步操作,可以将异步对象和回调函数脱离开来,通过then方法在这个异步操作上面绑定回调函数。返回字符串object

7.我有一段文字,但不知道多长,如何实现单行文本居中,多行文本居左显示

display: flex;
flex-direction: row;
justify-content: center;

8.我想实现一段动画,我有哪些可选的实现方式?一段流畅的动画帧与帧之间间隔有什么要求

html5动画,js动画,CSS3动画。多数情况下最高的绘制频率只能是每秒60帧(frame per second),对应于显示器的60Hz,低于这个频率,肉眼感觉画面卡顿不流畅,高于这个频率,及其耗费性能。因此通常采用的时间间隔就是1/60,也就是16.7ms

[tag type="success"]文章转载于:Joe的博客
链接:https://ae.js.cn/archives/99/[/tag]

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »