提问人:Drico 提问时间:9/23/2023 最后编辑:Mark RotteveelDrico 更新时间:9/24/2023 访问量:27
如何保留作为参数给出的函数上下文 [重复]
How to keep function context when given as a parameter [duplicate]
问:
这个问题在这里已经有答案了:
Javascript 在分配给其他变量时丢失上下文 (4 个答案)
“this”关键字是如何工作的,何时应该使用? (22 个答案)
2个月前关闭。
这篇文章在 2 个月前被编辑并提交审核,但未能重新打开帖子:
原始关闭原因未解决
复制函数时,似乎丢失了某种上下文。this.xxx
在以下示例中,调用 工作正常,但会导致错误。this.post
postCopy
class MyClass {
myFunc(){
await this.post(...) // works fine
const postCopy = this.post
await postCopy(...) // does not work properly
}
}
我不明白这两个调用之间有什么区别,因为 => .postCopy === this.post
true
我的最终目标是以论据为论据,我怎样才能正确地完成工作?this.post
myFunc
postCopy
虽然这个问题被标记为重复,但我认为不是。这个问题是关于“遇到这种情况怎么办”,而不是关于“关键字在javascript中如何工作”的一般问题,遇到同样问题的人会发现。this
答:
-3赞
Drico
9/23/2023
#1
调用命名函数 (const / let / parameter) 时,除非使用 .this
postCopy.call(this, ...args)
评论
0赞
jabaa
9/23/2023
此答案包含哪些详细信息,这些详细信息在 stackoverflow.com/a/23154981/16540390 中缺失
0赞
Drico
9/24/2023
答案是一样的,但问题不同。这个问题 stackoverflow.com/a/23154981/16540390 更难阅读,就我而言,我没有意识到它与我的问题有关。我想如果有人遇到与我相同的情况,他可能会去这个答案并跳过它,因为更难阅读。这就是我添加这个问题的原因
评论
const postCopy = this.post.bind(this)