zoukankan      html  css  js  c++  java
  • bind绑定过一次,第二次bind会改变this指向吗?

    今天的面试中,被问到了一个问题:

    如果一个函数被bind绑定了,我再次绑定bind,会改变this指向吗?

    我当时回答的是会,现在回头看一塌糊涂。

    现在把bind绑定的知识点总结一下:

    MDN文档中讲解this与bind方法中写道:
    
    “ECMAScript 5 引入了 Function.prototype.bind。调用f.bind(someObject)会创建一个与f具有相同函数体和作用域的函数。
    但是在这个新函数中,this将永久地被绑定到了bind的第一个参数,无论这个函数是如何被调用的。”

    意思是:bind方法就是新创建一个与函数f具有相同函数体和作用域的函数,然后把新函数的this指向永久绑定为bind的第一个参数,无论新函数如何被调用的,新函数的this指向已永久绑定。

    也就是我面试的问题,多次绑定bind会改变this指向吗?

    正确回答是:this永远指向第一次bind绑定的函数。

    例子:

    function f(){
      return this.a;
    }
     
    var g = f.bind({a:"azerty"});
    console.log(g()); // azerty
     
    var h = g.bind({a:'yoo'}); // bind只生效一次!
    console.log(h()); // azerty
     
    var o = {a:37, f:f, g:g, h:h};
    console.log(o.f(), o.g(), o.h()); // 37, azerty, azerty
     
    

      

    参考:https://blog.csdn.net/qq_37279880/article/details/104742832

  • 相关阅读:
    排列组合
    从$a_n=f(n)$的角度理解数列中的表达式$a_{n+1}=frac{k}{a_n}$
    洛必达法则的应用
    三角函数专题
    和差角公式的证明
    利用导数证明不等式
    常用数学模型整理
    教给学生知识的本源
    争鸣|两个易混概率题
    es6数组的复制
  • 原文地址:https://www.cnblogs.com/liumcb/p/14061715.html
Copyright © 2011-2022 走看看