将原型的方法传递给更高阶的函数javascript

时间:2017-10-14 17:45:37

标签: javascript prototype this reduce higher-order-functions

如何使用原型方法class Post < ApplicationRecord belongs_to :user end this等更高阶函数中引用原型?

示例代码:

reduce

我想将原型的function A() { this.names = ["John", "Jane", "Doe"]; this.printMergedNamesByIndexes = function() { const indicies = [0,1,2] console.log(indicies.reduce(this.mergeNames, "")) }; this.mergeNames = function(accumulator, index) { return accumulator + this.names[index] + ", " }; } const a = new A() a.printMergedNamesByIndexes() 方法传递给mergeNames函数,但在这种情况下,reduce方法中的此值不会引用原型本身。所以我收到了一个错误:

mergeNames

我发现了这篇文章:Using prototype functions in higher order functions in javascript,但TypeError: undefined is not an object (evaluating 'this.names[index]')方法给了我类似的错误,除了它抱怨bind方法不存在。

1 个答案:

答案 0 :(得分:0)

解决方案是使用 lambda / arrow函数

Arrow functions MDN web docs

  

箭头功能不会创建自己的;使用封闭执行上下文的this值。

这意味着将箭头函数传递给更高阶函数将捕获当前范围的bind值。在这种情况下,它意味着它将原型对象捕获为this,因此我们可以在箭头函数中使用它的方法。

this