2021前端面试题-JS篇

作者: 恬car | 来源:发表于2021-03-11 17:29 被阅读0次

    1. 原型(prototype)

    2. 原型链

    ```

    当查找一个对象的某个属性时,会先从它自身的属性上查找,

    如果找不到的话会从它的_proto_属性上查找,就是这个构造函数的prototype属性,

    如果还没找到就会继续在_proto_上查找,直到最顶层,找不到则为undefined,

    像这样一层一层去查找形成一个链式的称为原型链

    ```

    3. new关键字

    new一个函数,中间发生了什么

    1.开辟一个内存空间,也就是创建一个空对象,obj={}或obj=new Object()

    2.将这个新对象的_proto_属性指向它构造函数的prototype

    3.将构造函数this绑定为这个新对象,在空对象上挂在属性和方法(call或apply方式)

    4.返回这个新对象

    4. call apply bind

    相同:都是改变函数上下文this指向

    不同:bind返回的是一个函数,不会立即执行

             传参的不同 apply第二个参数为数组形式

             call apply都是对函数的直接调用

    5. call apply bind的实现

    6. this的指向

    1.作为普通函数直接调用,this指向window

    2.作为对象方法去调用的话,this指向调用它的这个对象

    3.箭头函数,没有this,this取决于外层离它最近的非箭头函数的this

    4.构造函数的this,指向创建这个构造函数的实例对象

    7. 作用域

    1.词法作用域(静态作用域)

      js采用的就是词法作用域

      只有函数可以限定作用域

      函数允许函数访问外层作用域的变量

      函数在定义的时候决定了函数作用域,词法作用域关心函数在何处被定义

    2.动态作用域

      函数在调用的时候决定了函数作用域,动态作用域关心函数在何处被调用

    8. 作用域链

    变量取值会到创建这个变量的函数作用域中去查找,如果找不到会向上查找,直到查找到全局作用域,这就形成了一个作用域链

    9. 节流和防抖

    1.节流

    2.防抖

    10. 继承(6种方式)以及优缺点

    1.原型链继承

    2.构造函数继承

    3.组合继承(原型链继承+构造函数继承)

    4.原型式继承

    5.寄生继承

    6.组合寄生继承

    11. 闭包

    定义在一个函数内部的函数,这个内部函数有权访问外部函数作用域的变量

    优点:

    缺点:

    12. promise

    13. js事件循环(event loop)

    js在运行中的任务,有一套收集,排队,执行的特殊机制,这种机制就是事件循环

    遇到同步事件直接执行,遇到异步事件分为宏任务和微任务

    如果微任务列表里有任务,先执行微任务再执行宏任务

    14. es6 let/const

    块级作用域  暂时性死区  能否被修改

    15. axios(拦截器)

    16. 箭头函数

    没有this  call apply方法修改this无效

    没有prototype属性

    没有argument

    不能使用new  不能用作构造函数,会报错

    17. es6 Class语法

    18. instanceOf的实现方式

    19. es6 set和map

    持续更新中.......

    相关文章

      网友评论

        本文标题:2021前端面试题-JS篇

        本文链接:https://www.haomeiwen.com/subject/rtroqltx.html