有没有办法用箭头函数实现方法链接?
Is there a way achieve method chaining with 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
上下文,当第二种方法尝试触发时,它失败是因为它试图在 window
对象上找到 method2
(如果这是对正在发生的事情的错误解释,请纠正我)和 in order to achieve method chaining you have to return this
很自然,这是一个问题。
我知道简单的解决方案很容易使用 function()
而不是上面案例中的箭头函数,但我想知道是否有一种方法可以使用箭头函数实现方法链接,或者这根本不可能?
我读过的相关问题:
也许您可以将 object
作为第一个参数传递给 method1
,效果很好。不过不太好看
var object = {
method1: (a: object) => {
console.log('method1');
return a;
},
method2: () => {
console.log('method2');
}
};
object.method1(object).method2(); // merp
我一直在尝试链接方法,然后意识到我的示例中的东西不起作用。
var object = {
method1: () => {
console.log('method1');
},
method2: () => {
console.log('method2');
}
};
object.method1(); // works fine
object.method2(); // works fine
object.method1().method2(); // merp
我知道箭头函数没有自己的 this
上下文,所以上面发生的情况是默认设置 window
上下文,当第二种方法尝试触发时,它失败是因为它试图在 window
对象上找到 method2
(如果这是对正在发生的事情的错误解释,请纠正我)和 in order to achieve method chaining you have to return this
很自然,这是一个问题。
我知道简单的解决方案很容易使用 function()
而不是上面案例中的箭头函数,但我想知道是否有一种方法可以使用箭头函数实现方法链接,或者这根本不可能?
我读过的相关问题:
也许您可以将 object
作为第一个参数传递给 method1
,效果很好。不过不太好看
var object = {
method1: (a: object) => {
console.log('method1');
return a;
},
method2: () => {
console.log('method2');
}
};
object.method1(object).method2(); // merp