有没有办法用箭头函数实现方法链接?

时间:2017-10-23 09:07:18

标签: javascript this arrow-functions

我正在努力将方法链接起来,并意识到事情在我的例子中没有用。

var object = {
  method1: () => {
    console.log('method1');
  },
  method2: () => {
    console.log('method2');
  }
};

object.method1(); // works fine
object.method2(); // works fine

object.method1().method2(); // merp

我知道箭头函数没有自己的this上下文,所以上面发生的情况是默认设置为window上下文,当第二种方法尝试触发时,它会失败,因为它试图在method2对象上找到window(请纠正我,如果这是对正在发生的事情的错误解释)和in order to achieve method chaining you have to return this那么自然,这是一个问题。

我知道简单的解决方案在上面的例子中使用function()而不是箭头函数很简单,但我想知道是否有办法用箭头函数实现方法链接,或者这根本不可能?< / p>

我读过的相关问题:Arrow function vs function declaration / expressions: Are they equivalent / exchangeable?

1 个答案:

答案 0 :(得分:0)

可能你可以将object作为method1的第一个参数传递给它,效果很好。但它不太好。

var object = {
  method1: (a: object) => {
    console.log('method1');
    return a;
  },
  method2: () => {
    console.log('method2');
  }
};


object.method1(object).method2(); // merp