代码之家  ›  专栏  ›  技术社区  ›  TechnoCorner

实现自定义绑定问题

  •  2
  • TechnoCorner  · 技术社区  · 6 年前

    我正在尝试实现本机绑定功能。但是,当我尝试测试它时,我没有得到预期的输出。

    有人能告诉我哪里出错了吗?

    Function.prototype.myBind =  function(...args) {
        const self = this;
        return function() {
            return self.apply(this, args);
        }
    };
    
    function demo() {
      return {
        name: 'James Bond',
        printName: function (args) {
          console.log(this.name, args);
        }
      };
    }
    
    
    const test = {
      name: 'Aqua Man'
    };
    
    console.log(demo().printName.myBind(test)('2020'));
    // expected
    console.log(demo().printName.bind(test)('2020'));
    1 回复  |  直到 6 年前
        1
  •  3
  •   Ebrahim Pasbani    6 年前

    您需要像这样绑定到参数:

    Function.prototype.myBind =  function(binder) {
        const self = this;
        return function() {
            return self.apply(binder, arguments);
        }
    };