如何使用原型方法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
方法不存在。
答案 0 :(得分:0)
解决方案是使用 lambda / arrow函数。
箭头功能不会创建自己的;使用封闭执行上下文的this值。
这意味着将箭头函数传递给更高阶函数将捕获当前范围的bind
值。在这种情况下,它意味着它将原型对象捕获为this
,因此我们可以在箭头函数中使用它的方法。
this