zoukankan      html  css  js  c++  java
  • 你不知道的JS系列 ( 21 ) - this显示绑定

    隐式绑定是必须在一个对象内部包含一个指向函数的属性,并通过这个属间接引用函数,从而把 this 间接隐式绑定到这个对象上。
    显示绑定是通过 call() 和 apply() 方法。它们的第一个参数是一个对象,它们会把这个对象绑定到 this.
    call
    function foo() {
      console.log(this.a);
    };
    var obj = {
      a: 2
    };
    foo.call(obj); // 2

    通过 foo.call(obj),调用 foo 时强制把它的 this 绑定到 obj 上。这种绑定是一种显示的强制绑定,我们称之为硬绑定




    apply
    function foo(something){
      console.log(this.a, something);
      return this.a + something
    }
    var obj = {
      a: 2
    }
    var bar = function() {
      return foo.apply(obj, arguments);
    }
    var b = bar(3); // 2 3
    console.log(b); //5

    硬绑定的典型应用场景就是创建一个包裹函数,传入所有的函数并返回接受到的所有值



    bind
    function foo(something){
      console.log(this.a, something);
      return this.a + something
    }
    var obj = {
      a: 2
    }
    var bar = foo.bind(obj);
    
    var b = bar(3); // 2 3
    console.log(b); //5

    由于硬绑定是一种非常常用的模式,所以在 ES5 中提供了内置的方法 Function.prototype.bind。bind 会返回一个硬编码的新函数,它会把参数设置为 this 的 上下文并调用原始函数



  • 相关阅读:
    C/C++一些库函数的实现
    约瑟夫环问题(Josephus)
    union关键字及大小端模式
    指针数组和数组指针
    巧用位运算
    C/C++生成可执行文件过程
    C语言+Modbus+NXP整体规划
    bug和待完善
    python学习第二课
    python学习第一课
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12424593.html
Copyright © 2011-2022 走看看