【问题标题】:this keyword inside setTimeout functionsetTimeout 函数中的 this 关键字
【发布时间】:2018-02-09 06:35:41
【问题描述】:

此问题与主题here相关

我期待控制台记录窗口,但它正在记录 LateBloomer。请帮我理解。

【问题讨论】:

标签: javascript this


【解决方案1】:

因为

window.setTimeout(console.log(this), 1000);

调用console.log(this),并将其返回值(undefined)传递给setTimeout,就像foo(bar())调用bar并将其返回值传递给foo一样。所以被记录的this 是当前的this 那行代码所在的位置。

而在链接的问题中,他们正在这样做:

window.setTimeout(this.declare.bind(this), 1000);

调用bind 并将其返回值(绑定函数)传递给setTimeout

【讨论】:

  • 懒得找骗子? ;)
  • @epascarello:你知道,我把它作为一个骗子关闭了,但是错误的 dupetarget,然后......由于某种原因,没有批判性地评估它可能是(嗯,必须是)一个欺骗了一个不同的欺骗目标!好点,谢谢。
  • @epascarello:具体来说:stackoverflow.com/questions/27643714/… 如果你愿意的话?
  • @epascarello:我从来没有这么高兴过。你有更好的目标吗?我很想换一个更好的。
  • 我想我无法清楚地表达我的疑问,所以你的回答没有多大帮助。我正在发展我的理解并记录它。我相信我很快就会明白这一点。我想分享我的笔记。如果您发现它们的方向正确并且您认为它们与这个问题有关,我将在这里发布我的观察结果。 dropbox.com/s/o9vqthx9jigccgb/thiskeyword.PNG?dl=0
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 2013-12-17
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多