class Foo {
constructor(bar) {
this.bar = bar
}
getBar() {
return this.bar
}
}
function unmethodize(f) {
return function(object, ...args) {
return f.apply(object, args)
}
}
const unmethodizedGetBar = unmethodize(Foo.prototype.getBar)
function test() {
foos = [new Foo(1), new Foo(2), new Foo(3)]
return foos.map(unmethodizedGetBar)
}
我知道foos.map(foo => foo.getBar())
等
我只是想要一个getBar
的版本,它接受"this"对象作为其第一个参数。它是否已经存在于某个地方,或者我必须通过unmethodize
或其他方式创建它?
它是否已经存在于某处?
不,你必须自己创建它。类中的getBar
只定义了一个需要this
参数的方法。
如果您不想使用箭头函数或编写自己的unmethodize
函数,您可以仅使用内置函数实现:
const unmethodize = Function.bind.bind(Function.call);
foos.map(Function.call.bind(Foo.prototype.getBar))
foos.map(Function.call, Foo.prototype.getBar)
但是认真地使用箭头函数:-)