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

  • 相关阅读:
    day15—jQuery UI之widgets插件
    day14—jQuery UI 之dialog部件
    day13—CSS之导航栏
    day12—jQuery ui引入及初体验
    day11—前端学习之我不想看书
    struts2的action方法匹配以及通配符的使用
    Java中的static
    ActiveMQ的简单使用
    MS DOS 常用命令整理
    IntelliJ IDEA 中 Ctrl+Alt+Left/Right 失效
  • 原文地址:https://www.cnblogs.com/liumcb/p/14061715.html
Copyright © 2011-2022 走看看