我正在努力将方法链接起来,并意识到事情在我的例子中没有用。
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?
答案 0 :(得分:0)
可能你可以将object
作为method1
的第一个参数传递给它,效果很好。但它不太好。
var object = {
method1: (a: object) => {
console.log('method1');
return a;
},
method2: () => {
console.log('method2');
}
};
object.method1(object).method2(); // merp