美文网首页
点点滴滴的前端面试题

点点滴滴的前端面试题

作者: zhaur | 来源:发表于2019-04-12 15:24 被阅读0次

    (一) 如何正确的判断 this? 箭头函数的 this 是什么?*

    this 的绑定规则有四种:默认绑定,隐式绑定,显式绑定,new 绑定.
    1.函数是否在 new 中调用 (new 绑定),如果是,那么 this 绑定的是新创建的对象;
    2.函数是否通过 call,apply 调用,或者使用了 bind (即硬绑定),如果是,那么 this 绑定的就是指定的对象;
    3.函数是否在某个上下文对象中调用 (隐式绑定),如果是的话,this 绑定的是那个上下文对象。一般是 obj.foo();
    4.如果以上都不是,那么使用默认绑定。如果在严格模式下,则绑定到 undefined,否则绑定到全局对象;
    5.如果把 null 或者 undefined 作为 this 的绑定对象传入 call、apply 或者 bind, 这些值在调用时会被忽略,实际应用的是默认绑定规则;
    箭头函数没有自己的 this, 它的 this 继承于上一层代码块的 this。

    (二) 词法作用域和 this 的区别

    1.词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的;
    2.this 是在调用时被绑定的,this 指向什么,完全取决于函数的调用位置 (关于 this 的指向问题,本文已经有说明)。

    (三) 什么是闭包?闭包的作用是什么?闭包有哪些使用场景?

    闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包最常用的方式就是在一个函数内部创建另一个函数。
    闭包的作用有:
    1. 封装私有变量;
    2. 模仿块级作用域 (ES5 中没有块级作用域);
    3. 实现 JS 的模块。

    (四) 谈谈你对原型的理解?

    在 JavaScript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数对象都有一个 prototype 属性,这个属性指向函数的原型对象。使用原型对象的好处是所有对象实例共享它所包含的属性和方法。

    相关文章

      网友评论

          本文标题:点点滴滴的前端面试题

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