Javascript:传递一个可以用"this"对象调用的方法


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)

但是认真地使用箭头函数:-)

相关内容

  • 没有找到相关文章

最新更新