如何保留作为参数给出的函数上下文 [重复]

How to keep function context when given as a parameter [duplicate]

提问人:Drico 提问时间:9/23/2023 最后编辑:Mark RotteveelDrico 更新时间:9/24/2023 访问量:27

问:

这个问题在这里已经有答案了:
2个月前关闭。

这篇文章在 2 个月前被编辑并提交审核,但未能重新打开帖子:

原始关闭原因未解决

复制函数时,似乎丢失了某种上下文。this.xxx

在以下示例中,调用 工作正常,但会导致错误。this.postpostCopy

class MyClass {
  
  myFunc(){
    await this.post(...) // works fine

    const postCopy = this.post
    await postCopy(...) // does not work properly
  }
}

我不明白这两个调用之间有什么区别,因为 => .postCopy === this.posttrue

我的最终目标是以论据为论据,我怎样才能正确地完成工作?this.postmyFuncpostCopy

虽然这个问题被标记为重复,但我认为不是。这个问题是关于“遇到这种情况怎么办”,而不是关于“关键字在javascript中如何工作”的一般问题,遇到同样问题的人会发现。this

javascript node.js 这个

评论

0赞 Konrad 9/23/2023
const postCopy = this.post.bind(this)

答:

-3赞 Drico 9/23/2023 #1

调用命名函数 (const / let / parameter) 时,除非使用 .thispostCopy.call(this, ...args)

评论

0赞 jabaa 9/23/2023
此答案包含哪些详细信息,这些详细信息在 stackoverflow.com/a/23154981/16540390 中缺失
0赞 Drico 9/24/2023
答案是一样的,但问题不同。这个问题 stackoverflow.com/a/23154981/16540390 更难阅读,就我而言,我没有意识到它与我的问题有关。我想如果有人遇到与我相同的情况,他可能会去这个答案并跳过它,因为更难阅读。这就是我添加这个问题的原因